首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DB2存储过程中将变量传递给动态SQL语句的选择列表?

如何在DB2存储过程中将变量传递给动态SQL语句的选择列表?
EN

Stack Overflow用户
提问于 2019-05-29 21:12:29
回答 2查看 693关注 0票数 1

我使用已声明的变量EFFDT (10)创建了DB2-400存储过程。应该将此变量的值传递给同一存储过程中的SQL语句。这个过程编译得很好,但是当我执行这个过程时,我得到

SQL-0206错误“列或全局变量@EFFDT未找到”。

以下是代码:

代码语言:javascript
复制
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;

我希望能看到

代码语言:javascript
复制
John M Smith 1111 GD General Dentist 05/01/2019
EN

回答 2

Stack Overflow用户

发布于 2019-05-30 21:32:30

@EFFDT似乎既没有定义为一个声明,也没有定义为一个参数。不过,我知道您在哪里声明EFFDT。也许可以尝试将@EFFDT改为EFFDT

票数 0
EN

Stack Overflow用户

发布于 2019-06-02 01:13:11

最后我没有使用这个变量。相反,我编写了一个SQL语句,将生效日期(EFF_DATE)修改为当前月份的第一天。以下是SQL语句: UPDATE INFOMATICS.TEMP_CHGS SET EFF_DATE =VARCHAR_FORMAT(月份(当前日期)欧元/01/‘财政年度(当前日期),’MM/DD/YYYY‘);

返回的EFF_DATE值与预期的‘05/01/2019’相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56368587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档