sas存储过程中的宏变量

Don*_*eld 1 stored-procedures sas

我在SAS中有一个代码.

proc sql;
create test as select * from test2 where user_name = &username;quit;
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dir*_*ten 5

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

有关更多信息,您可以阅读文档,也可以在插入后查阅日志

%put _automatic_;
Run Code Online (Sandbox Code Playgroud)

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

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