我用了2种循环的方式,对游标进行处理,发现一个让我疑问的地方,请大侠们指教:
for loop方式处理游标:
declare
cursor c_test is
select * from dept;
begin
for v in c_test loop
dbms_output.put_line(v.deptno||' '||v.dname);
end loop;
end;另一种while loop循环:
declare
cursor c is
select * from dept;
myrecord dept%ROWTYPE;
begin
open c;
fetch c into myrecord;
while c %found loop
dbms_output.put_line(myrecord.deptno);
fetch c into myrecord;
end loop;
close c;
end;
为什么for循环中不需要显示的打开和关闭游标,而while循环中需要呢
for loop方式处理游标:
declare
cursor c_test is
select * from dept;
begin
for v in c_test loop
dbms_output.put_line(v.deptno||' '||v.dname);
end loop;
end;另一种while loop循环:
declare
cursor c is
select * from dept;
myrecord dept%ROWTYPE;
begin
open c;
fetch c into myrecord;
while c %found loop
dbms_output.put_line(myrecord.deptno);
fetch c into myrecord;
end loop;
close c;
end;
为什么for循环中不需要显示的打开和关闭游标,而while循环中需要呢
而是在执行for的时候游标隐式的打开了.不用open cursor.
可以用以下属性判断:
SQL%FOUND
SQL%NOTFOUND
SQL%ROWCOUNT
SQL%ISOPEN具体见<<ReillyraclePLSQLProgrammingV3>>,英文的.
这是定死的,就是for可以,while不行..