SAS - > Shell DB2 Passthrough和宏解析

时间:2011-09-02 17:34:36

标签: sas sas-macro

我正在尝试自动执行一项涉及大量数据通过网络以及实际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命令所需的额外“'。

有什么想法吗?

1 个答案:

答案 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";