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を複数回実行しているため、少なくともPROC SQLステートメントをDOループ内に配置する必要があります

%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 に答える