2012-05-14 54 views
2

這是宏觀的一部分:SAS:宏變量和字符串。正確的表名

%let mvTableName = "MyTable"; 

    proc append base = &mvTableName data = TEMP_TABLE; 
    run; 

而且在工作中我找不到表:\

後,我檢查表的創建。

data &mvTableName; 
    run; 

並查看日誌:Dataset MyTable ...

但是,當我改變字符串%let mvTableName=MyTable;

我看到這篇日誌:Dataset WORK.MyTable ..

它如何解釋呢?

回答

3

如果你要使用mvTableName作爲數據=選項輸入,不包括雙引號

假定MyTable的和Temp_table是SAS數據集的工作庫...這應該工作。

%Let mvTableName=MyTable; 
Proc Append base=&mvTableName data=temp_table; 
run; 

此外,

Data &mvTableName; 
Run; 

創建一個空的數據集......所以mvTableName將被空數據集被覆蓋。

+0

謝謝!但是當我使用引號時會發生什麼? – gaussblurinc

+3

在宏變量賦值後的所有內容=直到;被分配給宏變量...不像數據步驟變量賦值不包括引號。引號包含在BASE =語句中......這是不正確的。在一個宏變量賦值中使用引號是很少見的(有些人會認爲它永遠不會發生)。如果你需要在你的語句中引用...只是包裝宏的變種。一定要使用雙引號,否則宏變量將無法解析。 –