Db2 400 如何将变量传递给动态SQL语句';DB2存储过程中的选择列表?
我使用声明的变量EFFDT Varchar(10)创建了DB2-400存储过程。该变量的值应该传递给同一存储过程中的SQL语句。这个过程编译得很好,但是当我执行这个过程时,我得到了 SQL-0206错误“未找到列或全局变量@EFFDT” 代码如下:Db2 400 如何将变量传递给动态SQL语句';DB2存储过程中的选择列表?,db2-400,Db2 400,我使用声明的变量EFFDT Varchar(10)创建了DB2-400存储过程。该变量的值应该传递给同一存储过程中的SQL语句。这个过程编译得很好,但是当我执行这个过程时,我得到了 SQL-0206错误“未找到列或全局变量@EFFDT” 代码如下: BEGIN -- Variable used to replace effective in SQL below with 1st -- day of current month as text in 'MM/DD/YYYY' format D
BEGIN
-- Variable used to replace effective in SQL below with 1st
-- day of current month as text in 'MM/DD/YYYY' format
DECLARE EFFDT VARCHAR(10);
SET EFFDT = VARCHAR_FORMAT(MONTH(CURRENT DATE) || '/01/' || YEAR(CURRENT DATE),'MM/DD/YYYY') ; -- First day of current month
...
--SQL STATEMENT
CREATE TABLE INFOMATICS.TEMP_CHGS_2_ADDS AS
(SELECT FNAME, MI, LNAME, MAILING_ZIP,
SPECLTY, SPECLTY_DESC, @EFFDT AS EFF_DATE
FROM INFOMATICS.TEMP_CHGS) WITH DATA;
...
End;
我希望看到
John M Smith 1111 GD General Dentist 05/01/2019
似乎未将
@EFFDT
定义为声明或参数。我知道您在哪里声明了EFFDT
。可能尝试将@EFFDT
更改为EFFDT
似乎@EFFDT
既没有定义为声明,也没有定义为参数。我知道您在哪里声明了EFFDT
。可能尝试将@EFFDT
更改为EFFDT
我最终没有使用该变量。相反,我编写了一条SQL UPDATE语句,将生效日期(EFF_date)修改为当月的第一天。下面是SQL UPDATE语句:
更新INFOMATICS.TEMP_CHGS SET EFF_DATE=VARCHAR_格式(月(当前日期)|'/01/|年(当前日期),'MM/DD/YYYY')
返回的EFF_DATE值与预期值一样为“2019年1月5日”。我最终没有使用该变量。相反,我编写了一条SQL UPDATE语句,将生效日期(EFF_date)修改为当月的第一天。下面是SQL UPDATE语句: 更新INFOMATICS.TEMP_CHGS SET EFF_DATE=VARCHAR_格式(月(当前日期)|'/01/|年(当前日期),'MM/DD/YYYY')
返回的EFF_日期值如预期的“2019年1月5日”。我感谢您的建议。我尝试将“@EFFDT”更改为EFFDT以匹配声明的变量名,但返回错误消息SQL0312-EFFDT未定义或不可用。类似地,我尝试更改SQL语句“@EFFDT”中声明的变量名及其引用。我再次收到相同的SQL0312错误消息。我感谢您的建议。我尝试将“@EFFDT”更改为EFFDT以匹配声明的变量名,但返回错误消息SQL0312-EFFDT未定义或不可用。类似地,我尝试更改SQL语句“@EFFDT”中声明的变量名及其引用。我再次收到相同的SQL0312错误消息。