例子程序代码块如下:
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循环中调用游标时,游标默认自动打开,提取和关闭. */
工作中用到,记录下来留做备用.