【问题标题】:db2 alter auto increment query stored proceduredb2 alter auto increment 查询存储过程
【发布时间】:2014-11-21 06:35:47
【问题描述】:

我尝试使用 DB2 存储过程更改表。下面是我的代码。我在alter query中发现了这个问题。但同样的查询在 DB2 命令行编辑器中执行得很好。我想使用存储过程运行相同的查询。请帮助我。

CREATE PROCEDURE MODIFYAUTOINCRE()
    SPECIFIC TEST
    RESULT SETS 1
    MODIFIES SQL DATA
    LANGUAGE SQL
------------------------------------------------------------------------
-- SQL Stored Procedure 
------------------------------------------------------------------------
P1: BEGIN
    DECLARE v_max INTEGER DEFAULT 0;--
    DECLARE stmt1 VARCHAR(100);
    DECLARE stmt2 VARCHAR(100);
    DECLARE name1 VARCHAR(100);

    -- Declare cursor
    DECLARE cursor1 CURSOR WITH RETURN FOR

        SELECT MAX(LABEL_ID) FROM ESTORE.APPLICATION_LABELS;


    -- Cursor left open for client application
    OPEN cursor1;

        FETCH cursor1 INTO v_max;
    IF (v_max > 0 ) THEN

    SET v_max=v_max+1;

        SET stmt1= 'ALTER TABLE APTR.APPLICATION_LABELS ALTER COLUMN LABEL_ID SET GENERATED AS IDENTITY (START WITH '||v_max||' INCREMENT BY 1 NO CACHE);';

        PREPARE name1 FROM stmt1;

        EXECUTE IMMEDIATE name1;

        commit;
    END IF;


END P1

错误: 在“NTITY (START WITH 69”) 之后发现了意外的标记“END-OF-STATEMENT”。预期的标记可能包括:“)”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.58.81

【问题讨论】:

    标签: stored-procedures db2


    【解决方案1】:

    动态 SQL 语句不得包含语句终止符。删除 stmt1 的尾随分号。

    【讨论】:

      【解决方案2】:

      过程本身没有问题,所有语法都是正确的(如果您说的是 Linux、UNIX 或 Windows 上的 DB2 的当前版本)并且它会编译。

      但是还有许多其他潜在的错误:

      1. 您查询表 ESTORE.APPLICATION_LABELS,但随后您更改了 APTR.APPLICATION_LABELS

      2. 当您更改表时,您应该只使用ALTER TABLE ... ALTER COLUMN ... RESTART WITH X,而不是尝试更改整个GENERATED 子句。

      3. 当您在存储过程中使用游标时,不确定为什么要使用 return 声明 cursor1。就此而言,不知道为什么你甚至首先使用光标,当你可以SELECT max(label_id) INTO v_max FROM ...

      4. 如果你要去EXECUTE IMMEDIATE,你不需要PREPARE你的声明。就EXECUTE IMMEDIATE stmt1;

      【讨论】:

        猜你喜欢
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 2015-02-25
        • 2014-10-26
        • 2019-11-10
        • 2015-06-09
        相关资源
        最近更新 更多