传递中的“%”究竟是什么意思?我从其他人那里得到了这个代码,代码运行正常,但我只是不明白为什么要把%放在变量前面。如果是%宏,我在库中看不到任何宏代码。任何解释都会有所帮助
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;
答案 0 :(得分:1)
%MACRO X; VAR %MEND;
以上示例是宏的定义。
在你的问题中,所有包含%的列实际上都在进行宏调用,并用它们的宏定义中的值替换调用。例如,在你的选择查询...
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
%application_id,%dpv, %dpvfn1, %dpvfn2, %dpvfn3,%AddressValid,%AddressValidMsg,%AddressType
上述所有宏调用都将检索其相应的定义,并将其替换为您选择列的位置...