0

以下のように、SAS の proc sql からマクロ コードを呼び出す必要があります。

PROC SQL;
 CONNECT TO DB2 (SSID = &DGSYS);  
  CREATE TABLE <DS_NAME> AS  
   SELECT * FROM CONNECTION TO DB2  
    (  
         SELECT * FROM <TAB_NAME> WHERE...       
    );

    %MACRO_CODE(....) --> am calling a macro block of code here

 DISCONNECT FROM DB2;  
QUIT;

しかし、これはエラーを吐き出しています。これはできませんか?

クエリでマクロ変数を使用すると、許可されますが、マクロ コードの呼び出しは許可されません。

このマクロは、以前に作成されたテーブル/データセットの値を保持する IN CLAUSE となる別のマクロ変数を作成します。その後、同じ PROC SQL の側で別の CREATE TABLE... で使用されます。

4

1 に答える 1

2

私の理解が正しければ、あなたがやっていることにはマクロは必要ないように思えます。データセットの値のリストを含むマクロ変数を作成する場合は、INTO: 句のみを使用できます。

ds_name : 数値変数と英数字変数を含むテーブル。

    proc sql noprint;

        /* If VAR_NAME is numeric, this works */
        select distinct var_name
        into: listvals
        separated by " "
        from ds_name;

        /* If VAR_NAME is character, do this instead */
        select distinct cats("'",varname,"'")
        into: listvals
        separated by " "
        from ds_name;

        create table new_ds as
        select *
        from another_ds
        where var_name in (&listvals);

   quit;

それが役立つことを願っています。

于 2013-11-18T20:50:40.990 に答える