请问 open cursor;
loop ...
fetch...into...
end loop;
close cursor;
与 for ...in ...loop
fetch...into...
end loop
的区别?
今天碰到一问题,两种情况下取得的结果不一样,请帮忙找下原因?谢了!
1 declare
2 vid varchar2(4);
3 i integer := 1;
4 cursor vrec is select id from personnel.personnel where id like '063%';
5 begin
6 --for r_rec in vrec
7 open vrec;
8 loop
9 dbms_output.put_line(i);
10 fetch vrec into vid;
11 i:=i+1;
12 dbms_output.put_line(vid);
13 exit when vrec%notfound;
14 end loop;
15 close vrec;
16* end;
SQL> /
1
0630
2
0631
3
0632
4
0633
5
0634
6
0635
7
0636
8
0637
9
0638
10
0639
11
0639
PL/SQL 程序顺利完成
SQL> ed
1 declare
2 vid varchar2(4);
3 i integer := 1;
4 cursor vrec is select id from personnel.personnel where id like '063%';
5 begin
6 for r_rec in vrec
7 --open vrec;
8 loop
9 dbms_output.put_line(i);
10 fetch vrec into vid;
11 i:=i+1;
12 dbms_output.put_line(vid);
13 -- exit when vrec%notfound;
14 end loop;
15 -- close vrec;
16* end;
SQL> /
1
0631
2
0633
3
0635
4
0637
5
0639
PL/SQL 程序顺利完成