2015-06-08 2 views
0

Я пытаюсь сделать следующее в макросе:ошибки с кавычками при переходе макропеременной в прок SQL

proc sql; 

select * from table1 where col1 like 'x%' 

quit; 


%macro temp(val=x); 

proc sql; 

select * from table1 where col1 like '&val%' 

quit; 

%mend; 

Проблема заключается в том, что для разрешения значения Вала, оно должно быть в двойных кавычках (»"), но оператор sql работает только с одинарными кавычками (''), поскольку он выдает ошибку с двойными кавычками: Недопустимое имя столбца.

Любое предложение, как решить это?

ответ

0

Я не думаю, что проблема связана либо с proc sql, либо с кавычками. Таким образом, Proc Sql отлично работает с двойными кавычками. Кроме того, переменная макроса не будет разрешаться под одной цитатой.

Моя проба:

*1st attempt:* 
%macro test(x=feed); 
proc sql; 
create table test5 as 
select * from files.spiderlist 
where host like "&x%"; 
quit; 
%mend test; 

*2nd attempt with || :* 
where host like ("&x" || '%'); 

И Возвращение "Feedly", "Feedfetcher", с 1-й попытки немного быстрее, чем второй попытки.

+0

Оператор proc sql с прямым выражением, использующим двойные кавычки, не работает: например, выберите * из таблицы1, где col1 как «x%», или infact col1 = «x», все выдают ту же ошибку: Недопустимое имя столбца. – user2542275

+0

Пожалуйста, взгляните на аналогичный вопрос: http://stackoverflow.com/questions/27288623/sas-proc-sql-inside-macro – yukclam9

+0

Пожалуйста, проверьте отредактированный ответ – yukclam9