SASを使用して、DBが非常に大きいため、速度を上げるためにパススルーを使用してSQLデータベースからデータを取得しています。以下のコードは期待どおりに動作します。
%let expectdate1 = '2013-07-03';*/
proc sql;
connect to ***** as abc (tdpid=***** user='****' password='*****' );
create table Searched_data as
select * from connection to dss(
SELECT *
FROM database.tablename
WHERE CAPTURE_DT >= '2013-07-01' and CAPTURE_DT <= &expectdate1
);
disconnect from abc;
quit;
この問題は、expectate1 をパラメーター化したいときに発生します。
だから私は交換します
%let expectdate1 = '2013-07-03';*/
と
%let expectdate1 = put(Date(),YYMMDD10.);
これは機能せず、Imが取得するエラーは次のようなものです
....WHERE CAPTURE_DT >= '2013-07-01' and CAPTURE_DT <= put(Date(),YYMMDD10) .....
したがって、日付コードを評価するのではなく、結果の文字列ではなく、実際のコードを SQL に渡します。