1

“%”到底是什么意思?我从其他人那里得到了这段代码,代码工作正常,但我只是不明白为什么必须把 % 放在变量前面。如果它是 %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;
4

1 回答 1

1

%宏 X; VAR %修正;

上面的例子是一个宏的定义。

在您的问题中,所有带有 % 的列实际上都在进行宏调用并将调用替换为其宏定义中存在的值。例如,在您的选择查询中...

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

上述所有这些宏调用将检索它们相应的定义并将它们替换为您选择的列的位置......

于 2012-03-07T00:22:33.553 回答