大家仔细看一下,下面第一个存储过程,test01,有没问题?
看似没问题,其实会造成重复行,test02将exit when的语句放到合适的位置上来。就不会出现最后一行重复打印的问题。
create or replace procedure test01 as
cursor cursor1 is
select * from v$session where rownum <= 5;
record1 cursor1%rowtype;
begin
DBMS_OUTPUT.ENABLE(buffer_size => null);
open cursor1;
loop
fetch cursor1 into record1;
dbms_output.put_line(record1.sid);
exit when cursor1%notfound;
end loop;
close cursor1;
end;
-----------------------------------------------------------------------
create or replace procedure test02 as
cursor cursor1 is
select * from v$session where rownum <= 5;
record1 cursor1%rowtype;
begin
DBMS_OUTPUT.ENABLE(buffer_size => null);
open cursor1;
loop
fetch cursor1 into record1;
exit when cursor1%notfound;
dbms_output.put_line(record1.sid);
end loop;
close cursor1;
end;