fetch bulk collect into 使用

在读取大量数据游标时,速度十分慢!然而使用fetch bulk collect into 批量效率能有效提高读取游标速度:
例如:
CREATE OR REPLACE PROCEDURE "WINBO_DELETE_PUR_REQ"
Is
 
  Type winbo Is Table Of  purchase_requisition_tab.REQUISITION_NO%Type;
  winbo_ winbo;
 CURSOR get_requisition_no IS
 Select A.REQUISITION_NO
From PURCHASE_REQUISITION A
Where A.REQUISITIONER_CODE!='MRP'
And Not Exists (Select 1 From PURCHASE_REQ_LINE_PART B
                           Where B.requisition_no=A.requisition_no)
And  Not Exists (Select 1 From PURCHASE_REQ_LINE_NOPART c
                           Where c.requisition_no=A.requisition_no);

begin
  -- Test statements here:如些进行循环操作数据,速度十分慢
  /*FOR rec_ IN get_requisition_no LOOP
       BEGIN
          Delete FROM  purchase_requisition_tab WHERE REQUISITION_NO =rec_.requisition_no ;
       EXCEPTION
          WHEN OTHERS THEN
             dbms_output.put_line('error:'||Sqlerrm||'requisition_no:'||rec_.requisition_no);       END;
   END LOOP;  */
 
   --Forall i IN 1..winbo_.Count:利用fetch bulk collect into批量读取数据,提高速度
   Open get_requisition_no;
   Fetch get_requisition_no Bulk Collect Into winbo_ ;
   Forall i In winbo_.First..winbo_.Last
      Delete FROM  purchase_requisition_tab WHERE REQUISITION_NO = winbo_(i);
   close get_requisition_no;
End winbo_delete_pur_req;

 
/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值