1

ネットワーク上および実際の db2 サーバーと SAS サーバーの間で大量のデータをやり取りするジョブを自動化しようとしています。私がやりたいのは、伝統的なパススルーです...

proc sql;
 connect to db2(...);
 create table temp as 
 select * from connection to db2(
    select
     date 
    .......
    where 
     date between &start. and &stop.
); disconnect from db2;
quit;

このようなものに:

x "db2 'insert into temp select date ...... where date between &start. and &stop.'";

シェル コマンドが早期に終了する原因となる 'ddMONyyyy'd の db2 日付形式の最初のいくつかの問題に遭遇しています。それを回避できれば、うまくいくはずだと思います。

db2 コマンドを実行するために余分な ' ' のセットを必要とせずに、マクロ変数を AIX (SAS) サーバーに渡すことができます。

何かご意見は?

4

1 に答える 1

2

括弧で WHERE 句をオフにすることで、日付の問題を一重引用符で囲むことができます。これが機能するかどうかはわかりませんが、試してみる価値があるかもしれません。

X コマンドに関しては、次のようなことを試してください。

%let start = '01jan2011'd;
%let stop  = '31dec2011'd;

%let command_text = db2 %nrbquote(')insert into temp select date ... where (date between &start. and &stop.)%nrbquote(');
%put command_text = &command_text;
x "&command_text";
于 2011-09-02T19:54:23.777 に答える