请问大家:游标从A表中取数据,然后循环删除A表中数据(为什么这样做,是因为删除数据时,要做其它相关操作),删除一条后立即commit.然后再循环.
这样是不是会导致游标内存区里的值变来变去呢。如 cursor cur_a is select * from table1loop
fetch cur_a;
when cur_a%nodatafound then exit;
delete from table1 where ....
--其它一系列动作
commit;end loop;因为游标很大,必须及时commit;不然怕回滚段不足。
这是定义游标是否有问题???
这样是不是会导致游标内存区里的值变来变去呢。如 cursor cur_a is select * from table1loop
fetch cur_a;
when cur_a%nodatafound then exit;
delete from table1 where ....
--其它一系列动作
commit;end loop;因为游标很大,必须及时commit;不然怕回滚段不足。
这是定义游标是否有问题???
然后在循环完之后处理
代码如下:
declare
c int := -1;
begin
select count(*) into c
from table1;
for i in 0..c loop
-- do somthing;
end loop;
truncate table table1;
end;