oracle 几种游标循环的区别

declare
 cursor vs is select * from ts;
 c vs%rowtype;
begin


----使用while来做游标循环的时候一定要注意,如果使用%found在while条件中一定要记得在此之前
---先fetch 第一条数据到变量,所以以下会出现两个fetch
open vs;
fetch vs into c;
while vs%found loop
fetch vs into c;
 DBMS_OUTPUT.PUT_LINE(c.NAME);
end loop;
close vs;

---这样子只用一次fetch
open vs;
 while 1=1
 loop 
  fetch vs into c;
  DBMS_OUTPUT.PUT_LINE(c.NAME);
 exit when vs%notfound;
 end loop;
 close vs;
 
 ---不用打开和关闭游标
 for i in vs loop
 DBMS_OUTPUT.PUT_LINE(i.NAME);
 end loop;

end;

你可能感兴趣的:(oracle)