oracle利用存储过程更新100000条数据;怎么让他更快

CREATE OR REPLACE PROCEDURE PROC_UPDATE_BDC_SECOND
as
  slsj      date;
  bjsj      date;
BEGIN
    --当是否更新字段为1时
   for cur_entry in(select a.ywh,a.entry_id,a.qllx,a.djlx,a.class_code,a.CATALOGUE_CODE
      ,a.bdcqzh,a.form_year
      from am_bdc_entry a
     where a.isbdcupdate =1 and a.state =100 and a.file_code =-1  )
   loop
   begin
      --查询并赋值到临时变量中受理时间(slsj)和办结时间(bjsj)
        select to_date(to_char(g.Start_Time_, 'YYYY-MM-DD'), 'yyyy-mm-dd') slsj,
               to_date(to_char(g.end_time_, 'YYYY-MM-DD'), 'yyyy-mm-dd') bjsj
          into slsj, bjsj
          from gisqbpm.ACT_HI_PROCINST g
         where g.business_key_ = cur_entry.ywh;
        --更新语句
        update wz_gisqam.am_bdc_entry t
           set t.start_date = slsj, t.end_date = bjsj
         where t.ywh = cur_entry.ywh;
       commit;
    exception
    when others then
    declare
      out_res varchar2(300);
    BEGIN
       out_res:='捕获错误 错误代码:'||SQLCODE||'错误信息:'||SQLERRM;
       insert into JOBS_LOG_TJ(LAST_DATE,SUCCESS_RECORD,PRO_NAME,FAILURE_RECORD)
       values(sysdate,cur_entry.ywh,'PROC_UPDATE_BDC_INFO',out_res);
       commit;
    end;
   end;
   end loop;

END ;

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
05-14 09:24
青岛工学院 C++
点赞 评论 收藏
分享
07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务