我想使用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()'中包裝麻煩的代碼將允許解析器繼續。 –