如何在 DB2 LUW 的存储过程中使用 COMMIT
How can I use COMMIT in stored procedure in DB2 LUW
CREATE TABLE T1(c1 varchar(10));
CREATE OR REPLACE PROCEDURE FOO()
BEGIN
FOR C AS WITH TT (C1) AS (VALUES (1) , (2) , (3)) SELECT C1 FROM TT
DO
INSERT INTO T1 VALUES ('aaa');
COMMIT;
END FOR;
END
@
当我执行这个存储过程时,我得到这个错误:
db2 "call foo()"
SQL0501N The cursor specified in a FETCH statement or CLOSE statement is not
open or a cursor variable in a cursor scalar function reference is not open.
如何为每个插入进行提交?
COMMIT
关闭所有未使用 HOLD
选项声明的打开的游标,包括由 FOR
语句隐式创建的游标。
这是您需要进行的更改:
FOR C AS cur1 CURSOR WITH HOLD FOR
WITH TT (C1) AS (VALUES (1) , (2) , (3)) SELECT C1 FROM TT
DO
INSERT INTO T1 VALUES ('aaa');
COMMIT;
END FOR;
CREATE TABLE T1(c1 varchar(10));
CREATE OR REPLACE PROCEDURE FOO()
BEGIN
FOR C AS WITH TT (C1) AS (VALUES (1) , (2) , (3)) SELECT C1 FROM TT
DO
INSERT INTO T1 VALUES ('aaa');
COMMIT;
END FOR;
END
@
当我执行这个存储过程时,我得到这个错误:
db2 "call foo()"
SQL0501N The cursor specified in a FETCH statement or CLOSE statement is not open or a cursor variable in a cursor scalar function reference is not open.
如何为每个插入进行提交?
COMMIT
关闭所有未使用 HOLD
选项声明的打开的游标,包括由 FOR
语句隐式创建的游标。
这是您需要进行的更改:
FOR C AS cur1 CURSOR WITH HOLD FOR
WITH TT (C1) AS (VALUES (1) , (2) , (3)) SELECT C1 FROM TT
DO
INSERT INTO T1 VALUES ('aaa');
COMMIT;
END FOR;