fetch bulk collect into 更新存储过程

SQL快速更新存储过程,效率非常快

declare 

         TYPE   t_id   IS   TABLE   OF   chncrmtpp.tp_card_no%TYPE; 
         v_t_id   t_id; 
              
         CURSOR   c   IS 
         SELECT   tp_card_no  FROM  chncrmtpp   where  trans_no like '3206%'; 
         --    
         cnt   NUMBER   :=   0; 
           BEGIN 
         OPEN   c; 
         LOOP 
                      cnt   :=   cnt   +   1; 
                      --   10000 
                   fetch   c   bulk   collect   into   v_t_id   LIMIT   10000; 
                      --   forall 
                      FORALL   i   IN   1   ..   v_t_id.COUNT 
                   UPDATE  tp_01   SET   db_type=chr(1)   WHERE   tp_01.id_no =v_t_id(i); 
                     --    
                     COMMIT; 
                      --    
                     exit   when   c%NOTFOUND; 
              END   LOOP; 
              dbms_output.put_line( ' ' ||c%rownum );      
              CLOSE   c; 
              COMMIT; 
end;  

 

转载于:https://www.cnblogs.com/yrash/p/11319837.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值