declare
empr emp%rowtype;
cursor curemp is select * from emp for update of sal;
begin
open curemp;
loop
fetch curemp into empr;
fetch curemp into empr;
dbms_output.put_line(empr.ename);
update emp set sal =6000 WHERE CURRENT OF curemp;
exit when curemp%notfound;
end loop;
end ;
结果:
ORA-01410: 无效的 ROWID
ORA-06512: 在line 12
empr emp%rowtype;
cursor curemp is select * from emp for update of sal;
begin
open curemp;
loop
fetch curemp into empr;
fetch curemp into empr;
dbms_output.put_line(empr.ename);
update emp set sal =6000 WHERE CURRENT OF curemp;
exit when curemp%notfound;
end loop;
end ;
结果:
ORA-01410: 无效的 ROWID
ORA-06512: 在line 12
fetch curemp into empr;
的下一行,而不是最后.
改成这样看看.
declare
empr emp%rowtype;
cursor curemp is
select * from emp for update of sal;
begin
open curemp;
loop
fetch curemp
into empr;
exit when curemp%notfound;
fetch curemp
into empr;
exit when curemp%notfound;
dbms_output.put_line(empr.ename);
update emp set sal = 6000 WHERE CURRENT OF curemp;
commit;
end loop;
end;