如何在PROC SQL中使用带有派生值的宏变量

时间:2016-07-04 09:04:59

标签: sas

我有一种情况需要为表名指定一个宏变量,其值来自另一个宏变量。

但是,宏中生成的代码使用派生公式而不是派生值本身。

    %macro testing;

    %let n=2;
    %let k=&n-1;
    %let opp=&k;

    PROC SQL;

    CREATE TABLE WORK.TABLE_&opp AS
    SELECT * from WORK.SOURCETABLE;

    QUIT;

    %mend;

    %testing

这导致代码生成错误

NOTE: Line generated by the macro variable "OPP".
34          WORK.TABLE_2-1
                    _
                    22
                    200
ERROR 22-322: Syntax error, 

但是我期望结果表将被命名为WORK.TABLE_1而不是WORK.TABLE_2-1。

那么我如何强制SAS识别变量opp = 1而不是opp = 2-1?

谢谢

1 个答案:

答案 0 :(得分:2)

尝试使用%eval,如下所示:

 %macro testing;

    %let n=2;
    %let k=&n-1;
    %let opp=%eval(&k);

    PROC SQL;

    CREATE TABLE WORK.TABLE_&opp AS
    SELECT * from WORK.SOURCETABLE;

    QUIT;

    %mend;

    %testing