繁体   English   中英

如何在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“调用foo()”
SQL0501N在FETCH语句或CLOSE语句中指定的游标未打开,或者在游标标量函数引用中的游标变量未打开。

如何为每个插入提交?

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;

文档参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM