【发布时间】:2012-03-06 15:22:50
【问题描述】:
“%”到底是什么意思?我从其他人那里得到了这段代码,代码运行良好,但我只是不明白为什么必须将 % 放在变量前面。如果它是 %macro,我在库中看不到任何宏代码。任何解释都会有所帮助
proc sql;
connect to odbc as d(datasrc=source);
create table out as select * from connection to d
(
select
t.id,t.rule_id,
%application_id,
t.date,
%dpv, %dpvfn1, %dpvfn2, %dpvfn3,
%AddressValid,%AddressValidMsg,%AddressType,
from &db2 t
join &db3 dxs on t.id=dxs.id
left join &db4 dxr on t.id=dxr.id
);
disconnect from d;
quit;
【问题讨论】:
-
你连接的是什么类型的 DBMS?
-
另外,如果你想仔细检查它是否是一个宏调用,不妨试试
%put %application_id;之类的东西,看看它是否会在日志中写入任何内容 -
最后,您可以通过自动调用工具检查是否有其他宏正在加载:
%put %sysfunc(getoption(sasautos)); -
%put %track_id; cast( substr(cast(uncompress(id) as char(80000)), (locate('
',cast(uncompress(id) as char(80000))) + 13), locate(' ',cast(uncompress(id) as char(80000))) - locate('' ,cast(uncompress(id) as char(80000))) - 13 ) as char(12) ) as track_id .. ...所以这是一个宏对吗? -
以上是我得到的输出。所以它是一个宏?在哪里可以找到原始代码?我不经常使用宏我知道如何通过 %macroname(var=blah); 创建和使用宏.但这是不同的。任何解释都会有所帮助,谢谢。
标签: sql macros sas pass-through