这可以在宏中运行吗?

时间:2012-10-20 01:32:21

标签: sql sas

我一直在尝试解析 issue 并使用不同的方法来解决它。我创建了一个宏来获得实际价值。 sql生成一个HTML视图,其中包含我需要的值。

 %macro actualvalue();

 proc sql noprint;

 %do i=1 %to %wordcount(&fieldlist);

 Select %scan(&fieldlist,&i) into :actualvar separated by ' ' FROM TableA Where        
 IncidentItemId=%scan(&incidentitemlist,&i);

 %end;

 quit;

 %mend actualvalue;

但是,actualvar宏变量似乎没有捕获该值。我尝试初始化宏变量的方式是否有问题,或者这不能在宏内执行。对此有任何想法将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为每次do循环运行时,它都会覆盖先前的actualvar值。你需要使用像

这样的东西
select %scan(&fieldlist,&i) into :actualvar&i ...

然后打印出&actualvar1 &actualvar2等的值...以检查结果。

答案 1 :(得分:0)

至少你需要把PROC SQL语句放在DO循环中,因为你的目标是多次运行proc sql

%do i=1 %to %wordcount(&fieldlist);
    proc sql noprint;
    Select %scan(&fieldlist,&i) into :actualvar separated by ' ' FROM TableA 
    Where IncidentItemId=%scan(&incidentitemlist,&i);
%end;

我认为其余部分没有任何问题。给它一个测试并报告任何错误。 我会相应地修改这个答案。