环境:版本:db2 v9.7.10 OS:aix
现有一个存储过程,使用游标和while循环,在循环中执行了一个SQL语句时能够正常循环执行,但执行多个SQL语句时则不能循环执行。
代码:
CREATE OR REPLACE PROCEDURE SPYW.PRO_TEST9 ( OUT P_COUNTER INTEGER )
--测试循环插入,先执行清空表操作再向表中插入数据
L1: BEGIN
DECLARE v_at_end,v_counter INTEGER DEFAULT 0;
DECLARE v_tabname,v_tabname2 VARCHAR(100);
DECLARE v_sql1,v_sql2 VARCHAR(100);
DECLARE c1 CURSOR
FOR select tabname,tabname2 FROM test0602; --test0602的两个字段的属性是库中已存在的表名
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_at_end = 1;
OPEN c1;
FETCH c1 INTO v_tabname,v_tabname2;
WHILE (v_at_end = 0)
DO
set v_sql1= 'delete from '||v_tabname;--先执行清空表操作
set v_sql2= 'insert into '||v_tabname||' select * from '||v_tabname2;--再向表中插入数据
prepare v_stmt1 from v_sql1;
execute v_stmt1;
prepare v_stmt2 from v_sql2;
execute v_stmt2;
SET v_counter = v_counter + 1;
FETCH c1 INTO v_tabname,v_tabname2;
END WHILE;
SET p_counter = v_counter;
END L1;
请问如何修改才能正常循环
收起