1

SASSQLパススルーでマクロ変数を文字として読み取る方法

私の目標は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);
4

1 に答える 1

2

ただし、テストは行っていません。次のように、マクロ変数を列の値として配置できると思います。

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

また

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

マクロ変数値をフェッチするための引用符または関数が指定されていない場合、選択されたオブジェクト(ここでは「1つ」)は元のテーブルの列と見なされます。したがって、そのような列がないためにエラーが発生します。

于 2012-01-13T20:48:37.583 に答える