例子程序代码块如下:
create or replace procedure PROC_QZCSQKTJ is
-- 定义游标类型
type cursor_type is ref cursor;
c_qzcs cursor_type;
-- 定义用于存放游标结果的记录类型
type record_type is record(
ywlx za_zfba_jcxx_aj_qzcsqk.ywlx%type,
qzcslb za_zfba_jcxx_aj_qzcsqk.qzcslb%type);
r_qzcs record_type;
-- 定义并初始化游标
Cursor Cur_User_Table IS
select a.* from test_a;
Rec_User_Table Cur_User_Table%Rowtype;
begin
--循环访问已经初始化的游标
for Rec_User_Table in Cur_User_Table loop
...
-- 根据Rec_User_Table记录中的值查询业务表,赋值到c_qzcs游标中,并打开该游标.
open c_qzcs for
select b.*
from test_b
where col_a = Rec_User_Table.col_a ;
-- 循环从游标里里取记录,无数据可取即退出
loop
fetch c_qzcs into r_qzcs;
exit when c_qzcs%notfound;
...
end loop;
close c_qzcs;--关闭游标
...
End Loop;
end PROC_QZCSQKTJ;
/*
注意:
在for循环中调用游标时,游标默认自动打开,提取和关闭.
*/
工作中用到,记录下来留做备用.