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在FETCH语句或CLOSE语句中指定的游标不是 打开或游标标量函数引用中的游标变量未打开。
如何为每个插入内容提交内容?
答案 0 :(得分:1)
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;