sas存储过程中的宏变量

时间:2015-12-10 11:29:48

标签: stored-procedures sas

我在SAS中有代码。

proc sql;
create test as select * from test2 where user_name = &username;quit;

当我使用%let username=Bob在SAS EG中运行时,它运行正常。 但我需要使用存储过程运行它(变量用户名是连接用户的内部参数,我从sas存储过程代码中删除%let username=Bob)。 存储过程制动并出现错误。

在日志文件中,我看到变量:

_username=Bob但是存储过程中的代码找不到它。如何在SAS存储过程代码中使用此变量?谢谢!

1 个答案:

答案 0 :(得分:5)

在您自己的SAS代码中,您使用宏变量username,但在您的存储过程中,用户名在保留的宏变量_username中可用。下划线实际上是变量名称的一部分,因此您应该写&_username

有关详细信息,请阅读the documentation或插入

后查阅日志
%put _automatic_;

在您的代码中,打印为您提供的所有宏变量。

备注:由于存储过程中的自动宏变量与本地SAS会话中的自动宏变量不同,如果要在两者中使用相同的代码,通常需要一些%if %then %else逻辑。