我想使用PROC SQL和现有的宏变量的值插入到SAS数据集的行,但我收到标准的语法错误消息。这里是一个失败的代码示例:与SAS的宏变量报价错误
%let viewname=MKTVIEWS.imei_ref;
%let xrc=0;
%let xmsg= ;
proc sql;
create table results (viewname char(40), xrc numeric, xmsg char(200));
insert into results (viewname, xrc, xmsg)
values (%str(%')&viewname%str(%')
, &xrc
, %str(%')%superq(xmsg)%str(%'));
quit;
以下是错误消息:
ERROR 22-322: Syntax error, expecting one of the following: a quoted string,
a numeric constant, a datetime constant, a missing value, +, -, MISSING, NULL,
USER.
没有两个字符的宏观变量运行该程序正常工作:
proc sql;
create table results (viewname char(40), xrc numeric, xmsg char(200));
insert into results (viewname, xrc, xmsg)
values ('MKTVIEWS.imei_ref'
, &xrc
, '');
quit;
显然我错过了一些关于宏观引用或类似的东西。我甚至尝试过使用临时宏变量,而不是嵌入这些调用来创建引用字符串,但那也不起作用。
有时候我注意到SAS被有效使用宏引用函数绊倒了。发生这种情况时,在'%unquote()'中包装麻烦的代码将允许解析器继续。 –