2012-01-13 71 views
1

如何看宏觀變量作爲SAS SQL字符直通SAS SQL傳遞給宏變量爲一個字符

我的目標是把「一」爲VAR3唯一的價值,但現在我得到

「未知列一個」

%macro test(notvar=) 

proc sql; 
     connect to odbc as conn (datasrc=x user=&user1. password=&pwd1.); 
     create table &notvar. (compress=no) as select * from connection to conn 
     (
      select var1, var2, 
      &notvar. as var3 
      from table1 
    ); 
disconnect from conn; 
quit; 

%mend test; 

%test(notvar=one); 
+0

如果您刪除所有宏引用並且硬編碼所有參數,是否會得到相同的錯誤? – 2012-01-13 19:55:52

回答

2

還沒雖然測試。我想你可以把宏變量像列的值:

select var1, var2, 
"&notvar" as var3 
from table1 

select var1, var2, 
symget('notvar') as var3 
from table1 

如果沒有指定引號或函數用於提取宏變量值,選擇的對象(「一」在你的情況下)被視爲原始表格中的一列。所以你會因爲沒有這樣的列而出錯。

+0

太棒了,謝謝Robbie – JPC 2012-01-13 21:22:50

+0

symget方法會在SQL passthrough中拋出一個錯誤,因爲這是一個本地SAS函數。 – 2012-04-19 10:00:39

+0

@RawFocus在宏設置中它沒問題。 – 2012-04-19 11:27:58