2015-12-10 146 views
1

我在SAS中有一個代碼。sas存儲過程中的宏變量

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

當我在SAS EG運行與%let username=Bob它運行正常。 但我需要運行它與存儲過程(變量的用戶名是內部參數在連接的用戶,我從sas存儲的過程代碼中刪除%let username=Bob)。 存儲過程制動器出錯。

在日誌文件中我看到變量:

_username=Bob但代碼存儲過程中無法找到它。如何在SAS存儲過程代碼中使用這個變量?謝謝!

回答

5

在您自己的SAS代碼中,您使用宏變量username,但在您的存儲過程中,用戶名在保留的宏變量_username中可用。下劃線實際上是變量名稱的一部分,因此您應該寫&_username

欲瞭解更多信息,你可以閱讀the documentation或者你可以在你的代碼中插入

%put _automatic_; 

諮詢後日志,打印所有宏變量SAS爲您提供。

備註:由於存儲過程中的自動宏變量與本地SAS會話中的自動宏變量不同,因此如果要在兩者中使用相同的代碼,則通常需要一些%if %then %else邏輯。