用ForLoop替代Cursor--Oracle的使用技巧
在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內部具體的實現方法。