Stored procedures sas存储进程中的宏变量
我有SAS的代码Stored procedures sas存储进程中的宏变量,stored-procedures,sas,Stored Procedures,Sas,我有SAS的代码 proc sql; create test as select * from test2 where user_name = &username;quit; 当我使用%let username=Bob在SAS中运行时,它运行正常。 但我需要使用存储进程运行它(变量username是connected user中的内部参数,我从sas存储进程代码中删除%let username=Bob)。 存储的进程制动器出现错误 在日志文件中,我看到变量: \u username=B
proc sql;
create test as select * from test2 where user_name = &username;quit;
当我使用%let username=Bob在SAS中运行时,它运行正常。
但我需要使用存储进程运行它(变量username是connected user中的内部参数,我从sas存储进程代码中删除%let username=Bob
)。
存储的进程制动器出现错误
在日志文件中,我看到变量:
\u username=Bob
但存储进程中的代码找不到它。如何在SAS存储过程代码中使用此变量?谢谢大家! 在您自己的SAS代码中,您使用宏变量username
,但在存储过程中,用户名可在保留的宏变量\u username
中使用。下划线实际上是变量名的一部分,因此您应该编写&\u username
有关更多信息,您可以阅读或在插入后查阅日志
%put _automatic_;
在代码中,打印SAS为您提供的所有宏变量
备注:由于存储进程中的自动宏变量不同于本地SAS会话中的自动宏变量,如果您想在两者中使用相同的代码,通常需要一些%if%then%else
逻辑。在您自己的SAS代码中,您使用宏变量username
,但在存储进程中,用户名在保留宏变量\u username
中可用。下划线实际上是变量名的一部分,因此您应该编写&\u username
有关更多信息,您可以阅读或在插入后查阅日志
%put _automatic_;
在代码中,打印SAS为您提供的所有宏变量
备注:由于存储进程中的自动宏变量与本地SAS会话中的自动宏变量不同,如果您想在这两个会话中使用相同的代码,通常需要一些%if%then%else
逻辑