小编典典

在数据步骤中为每个实例执行一个宏

sql

我有一个宏,可以在给定的时间范围内将数据插入表中。

它遍历一系列从头到尾的日期(存储在数据集中),并使用proc sql insert语句运行宏。

在所有这些操作的最后检查数据时,我注意到新数据集中只有最后的起始至结束期间的数据。

这是在数据步骤中调用宏时的代码。

data _null_;
    set extract_insert_dates;
    %insert_table_extract(put(extract_start, date11.),put(extract_end, date11.));
run;

我还需要在数据步骤中调用其他方法,以便该方法可以工作,并为每个from-to周期(而不是最后一个周期)插入数据(运行宏)吗?


阅读 174

收藏
2021-04-14

共1个答案

小编典典

假设您是宏编译器,然后将宏调用替换为它将生成的实际SAS代码。请记住,对于宏处理,put(extract_start, date11.)和的参数值put(extract_end, date11.)只是字符串。

我怀疑你需要使用呼叫执行这样的数据集变量的值extract_start,并extract_end可以传递给宏。

data _null_;
  set extract_insert_dates;
  call execute(cats('%nrstr(%insert_table_extract)(',put(extract_start, date11.),',',put(extract_end,date11.),')'));
run;
2021-04-14