Я пишу макрос, который в какой-то момент вызывает некоторый код процедуры SQL. Я хочу, чтобы пользователь мог указывать произвольные параметры sql процедуры (например, inobs = 100 может быть одним из входных аргументов моего макроса).
Мне очень трудно цитировать аргумент, который имеет знак равенства '='.
Одна из проблем заключается в том, что я должен также проверить, является ли аргумент макроса пустым или нет, и если он не пуст, только затем добавьте указанные параметры в оператор sql.
Ниже приведен пример неработающего теста, который не работает и выдает ошибку
ОШИБКА: параметр ключевого слова INOBS не был определен с макросом.
Я прочитал это (http://www2.sas.com/proceedings/sugi28/011-28.pdf) и другие SUGI и попробовали много возможных способов цитировать и вызывать макрос.
Был бы очень признателен, если бы кто-нибудь мог предоставить рабочий пример нижеприведенной функции.
options mprint mlogic;
data have;
length x $8;
input x;
datalines;
one
two
three
;
proc sql inobs=2;
create table sql_output as
select *
from have;
quit;
%macro pass_parameter_with_equal_sign(table=, sqlOptions=);
proc sql
%if "%left(%trim(&sqlOptions.))" ne "" %then %do;
&sqlOptions.
%end;
/* the semicolon to end the proc sql statement */
;
create table macro_output as
select *
from have;
quit;
%mend;
%pass_parameter_with_equal_sign(table=have, sqlOptions=%str(inobs=2))
title "SQL output:";
proc print data=sql_output; run;
title "Macro output:";
proc print data=macro_output; run;