更新大表中某个字段的存储过程

create or replace procedure pp_temp2 is--用于根据某个表的数据来更新一张大表的某个字段
  cursor cur is --从参考表中获取需要的字段,包括待更新的字段和关联字段
    select column1,column2,column3
      from schema_name.bi_1_tkt t;--可以添加dblink
  type typ_column1 is table of tab_1.column1%type;--以下三句根据列格式定义三种类型的集合
  type typ_column2 is table of tab_1.column2%type;
  type typ_column3 is table of tab_1.column3%type;
  lis_column1     typ_column1; --以下三句创建与列类型对应的集合实例
  lis_column2 typ_column2;
  lis_column3   typ_column3 ;
  n_count number; --用于存储数量
begin
  open cur;--开启游标
  loop
    fetch cur bulk collect--每批1000条,将数据分批fetch
      into lis_column2,lis_column1,lis_column3  limit 1000;
    n_count:=lis_column2.count;
    forall i in lis_column2.first .. lis_column2.last--用forall语句更新
      update tab_1
         set column3=lis_column3(i)
       where tab_1.column2=lis_column2(i)
         and tab_1.column1=lis_column1(i)
         and tab_1.bsp_code = 'XX';
    commit;
    exit when n_count=0;
  end loop;
  close cur;--关闭游标,结束程序
end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451536/viewspace-761935/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26451536/viewspace-761935/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值