`

oracle动态游标简介

阅读更多

 

例子程序代码块如下:

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循环中调用游标时,游标默认自动打开,提取和关闭.
*/

  

工作中用到,记录下来留做备用. 

 

 

 

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics