我正在尝试自动执行一项涉及大量数据通过网络以及实际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日期格式,它导致shell命令提前终止。如果我可以解决这个问题,我认为它应该可行。
我可以将宏变量传递给AIX(SAS)服务器,而无需执行db2命令所需的额外“'。
有什么想法吗?
答案 0 :(得分: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";