set serveroutputon
declare
cursor curis
select c
from t1;
vvarchar2(2);
begin
insertinto tvalues('1');
open cur;
loop
fetch curinto v;
exitwhen cur%notfound;
rollback;
endloop;
close cur;
end;
/
curor前有未提交的dml,循环内部有rollback,则在再次fetch cursor时会报ORA-01002
t1中至少有一条数据
cursor报错,for loop不报错
9i(9.2.0.8)不报错,10G(10.2.0.4)报错,在11.2.0.3.2上同样会报错
属于《Bug 13256185 : ORA-1002 OCCURED ON 10.2 OR LATER IF CURSOR FETCHED AFTER ROLLBACK》