0

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

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

在所有这一切结束时检查数据时,我注意到只有最终从到期的数据在新数据集中。

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

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

我应该在数据步骤中调用其他什么来使其工作并为每个从到时间段插入数据(运行宏),而不仅仅是最后一个?

4

1 回答 1

3

假设您是宏编译器,并将宏调用替换为它将生成的实际 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;
于 2016-06-03T00:58:39.283 回答