2012-01-13 4 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

Вы получаете ту же ошибку, если удаляете все ссылки на макросы ... и жестко кодируете все свои параметры? –

ответ

2

не проверял, хотя. Я думаю, что вы можете поставить макропеременную в качестве значения столбца, как:

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

или

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

Если нет кавычки или функции для извлечения макра значения переменного не указана, выбранного объект («один» здесь в вашем случае) рассматривается как столбец в исходной таблице. Таким образом, вы получаете ошибку, поскольку нет такого столбца.

+0

Удивительный, благодаря Robbie – JPC

+0

подход symget вызовет ошибку при пересылке SQL, поскольку это собственная функция SAS. –

+0

@RawFocus Это нормально в настройках макроса. –

Смежные вопросы