在数据设置中,我正在使用“调用执行”,如下所示:
除了最后两个变量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;");
答案 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 ;