【发布时间】: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