我用声明的变量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
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
答案 0 :(得分:0)
看来@EFFDT
既没有定义为声明,也没有定义为参数。我知道您在哪里声明EFFDT
。也许尝试将@EFFDT
更改为EFFDT
。
答案 1 :(得分:0)
我最终没有使用该变量。相反,我编写了一条SQL UPDATE语句以将生效日期(EFF_DATE)修改为当前月份的第一天。这是SQL UPDATE语句: UPDATE INFOMATICS.TEMP_CHGS SET EFF_DATE = VARCHAR_FORMAT(MONTH(CURRENT DATE)||‘/ 01 /’|| YEAR(CURRENT DATE),’MM / DD / YYYY');
返回的EFF_DATE值与预期的'05 / 01/2019'。