proc sql在SAS中执行的调用中插入

时间:2019-02-12 03:15:43

标签: sas

在数据设置中,我正在使用“调用执行”,如下所示:

除了最后两个变量mhstdtc2和mhendtc2之外,其他所有东西都工作正常,这些变量是num类型,其信息格式为date9。

我收到一条注释,该行上的数字变量正在转换为字符,如何在调用执行语句中插入日期。谢谢

我尝试删除引号,这会导致执行混乱。

  call execute("proc sql;
insert into leaddata values("||subjid||","||mhterm||","||mhstdtc_dtr||","||mhstdtc_dtr||","||mhstdtc_dtr||","||sitemnemonic||","||mhstdtc2||"d,"||mhendtc2||"d);quit;");

1 个答案:

答案 0 :(得分:2)

在生成代码之前,请确保您知道要生成的代码。看起来您正在尝试生成如下内容:

values(101,Stomach Pain,30NOV2018,15DEC2018,Clinic 47);

但是您需要围绕字符变量生成引号。同样,也无需将日期转换为可读的日期文字,只需将其保留为原始天数即可。

call execute(catx(' ','proc sql;','insert into leaddata','values('
 ,catx(',',quote(subjid),quote(mhterm),date1,number2,....)
 ,');quit;'));

但是,如果您将数据存储在数据集中,为什么不直接从数据集中插入?

insert into leaddata select subjid,mhterm,.... from have ;