Stored procedures DB2ALTER自动增量查询存储过程
我尝试使用DB2存储过程更改表。下面是我的代码。我在alterquery中发现了这个问题。但同样的查询在DB2命令行编辑器中完美地执行。我想使用存储过程运行相同的查询。请帮帮我Stored procedures DB2ALTER自动增量查询存储过程,stored-procedures,db2,Stored Procedures,Db2,我尝试使用DB2存储过程更改表。下面是我的代码。我在alterquery中发现了这个问题。但同样的查询在DB2命令行编辑器中完美地执行。我想使用存储过程运行相同的查询。请帮帮我 CREATE PROCEDURE MODIFYAUTOINCRE() SPECIFIC TEST RESULT SETS 1 MODIFIES SQL DATA LANGUAGE SQL ---------------------------------------------------
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(以69开头)”之后发现意外的标记“END-OF-STATEMENT”。预期的标记可能包括:“)”。。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.58.81动态SQL语句不能包含语句终止符。从
stmt1
中删除尾随分号。过程本身没有问题,所有语法都是正确的(如果您谈论的是Linux、UNIX或Windows上当前版本的DB2),它将编译
但是,还有许多其他潜在错误:
ESTORE.APPLICATION\u标签
,然后更改APTR.APPLICATION\u标签
altertable。。。更改列。。。用X重新启动,而不是试图更改整个生成的子句
cursor1
。对于这一点,我不知道你为什么要首先使用光标,当你可以从…SELECT max(label\u id)进入v\u max时。
立即执行stmt1代码>