2012-01-13 17 views
1

としてSAS SQLで文字としてマクロ変数の読み方パススルーSASは、パススルーSQLマクロ変数に文字

を私の目標はVAR3で唯一の値として「1」を置くことですが、今

"不明列1"

%macro test(notvar=) 

proc sql; 
     connect to odbc as conn (datasrc=x user=&user1. password=&pwd1.); 
     create table &notvar. (compress=no) as select * from connection to conn 
     (
      select var1, var2, 
      &notvar. as var3 
      from table1 
    ); 
disconnect from conn; 
quit; 

%mend test; 

%test(notvar=one); 
+0

すべてのマクロ参照を削除し、すべてのパラメータをハードコードすると同じエラーが発生しますか? –

答えて

2

はしかし、テストしていませんます。私はあなたのように列の値として、マクロ変数を置くことができると思います:マクロ変数の値を取り出すための引用符や関数が指定されていない場合

select var1, var2, 
"&notvar" as var3 
from table1 

または

select var1, var2, 
symget('notvar') as var3 
from table1 

、選択したオブジェクト(「1」ここではあなたの場合)元のテーブルの列と見なされます。そのような列がないので、あなたはエラーを取得します。

+0

素晴らしい、ありがとうRobbie – JPC

+0

symgetのアプローチは、SQLパススルーでエラーをスローします。これは、ネイティブのSAS関数です。 –

+0

@RawFocusマクロ設定で問題ありません。 –

関連する問題