[PL/SQL] 用For Loop 替代Cursor

我们在 Oracle 存储过程中需要遍历一张表,应该怎样做。我想大多少的人第一个念头就是 Cursor 。

比如:

** create ** or replace procedure StudyCursor(
resulst out integer
) is
v_tablename varchar ( 30 );
v_tabletype varchar ( 11 );
cursor mycursor is select * from cat;
begin
open mycursor;
loop
fetch mycursor into v_tablename,v_tabletype;

null; --you can use tablename and v_tabletype
end loop ;
close mycursor;
end StudyCursor;


最近在看代码是,发现其实我们还有一个更方便的方法就是使用 for in loop … end loop

** create ** or replace procedure StudyFor(
resulst out integer
) is
begin
for emm in ( select * from cat) loop
null ; --you can use emm.table_name and emm.table_type
end loop ;
return ;
end StudyFor;


是不是更方便,我要使用的查询结果,只需使用 emm.table_name 和 emm.table_type 即可。

查找了 Oracle 的官方文档,似乎没有看见 for loop 的此种用法。确实很奇妙,只是不知道 oracle 内部具体的实现方法。

** 关于作者

**

樊欢 java 爱好者,您可以通过 [email protected] 与我联系。

Email 、 MSN : [email protected]

Blog : http://heyday.blogone.net

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus