0

我一直在尝试解决问题并使用不同的方法来解决它。我创建了一个宏来获取实际值。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 宏变量似乎没有捕获该值。我尝试初始化宏变量的方式是否有问题,或者无法在宏内执行。对此的任何想法将不胜感激。

4

2 回答 2

1

我认为每次您的do循环运行时,它都会覆盖actualvar. 你需要使用类似的东西

select %scan(&fieldlist,&i) into :actualvar&i ...

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

于 2012-10-20T08:41:42.173 回答
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;

不过,我认为其他方面没有任何问题。给它一个测试并报告任何错误。我会相应地修改这个答案。

于 2012-10-20T06:27:59.507 回答