SAS宏,将值作为字符串传递给where子句

时间:2014-07-22 15:37:34

标签: sas sas-macro

我的SAS宏下面没有工作---这个片段没有返回任何值,因为where语句不起作用。有人有主意吗?我尝试添加%str,但这也没有用。

%macro refreshments(beverage_type=);

proc sql;
select

*

where drink_type = '&beverage_type.'
;
quit;

%mend

%refreshments(Sprite);

感谢。

1 个答案:

答案 0 :(得分:4)

宏变量无法用单引号解析。您还缺少FROM子句,并且宏参数被提供为位置(而不是名称=值对)。请尝试以下方法:

%macro refreshments(beverage_type=);
  proc sql;
  select * 
    from YOURTABLE
    where drink_type = "&beverage_type";
%mend;

%refreshments(beverage_type=Sprite);