我在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存储过程代码中使用此变量?谢谢!
答案 0 :(得分:5)
在您自己的SAS代码中,您使用宏变量username
,但在您的存储过程中,用户名在保留的宏变量_username
中可用。下划线实际上是变量名称的一部分,因此您应该写&_username
。
有关详细信息,请阅读the documentation或插入
后查阅日志%put _automatic_;
在您的代码中,打印为您提供的所有宏变量。
备注:由于存储过程中的自动宏变量与本地SAS会话中的自动宏变量不同,如果要在两者中使用相同的代码,通常需要一些%if %then %else
逻辑。