greenZ

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Oracle 高效的SQL:oracle存储过程大数据量insert,分批提交

oracle存储过程大数据量insert,分批提交(转)
http://www.dataguru.cn/thread-139511-1-1.html
declare
vv_cur_sql varchar2(4000);
vv_table varchar2(32);
vv_original_table varchar2(32);
type t_cursor is ref cursor;
cur t_cursor;
type rec ia table of t_orig_ref_cfg_tab_bak%ROWTYPE;
recs rec;
begin
vv_table:='t_orig_ref_cfg_tab'
vv_original_table:='tb_dic_region';
vv_cur_sql:='select * from '||vv_table||' t where t.original_table='''||vv_original_table||'''';
 
open cur for vv_cur_sql;
 
while (true) loop
  fetch cur bulk collect into recs limit 2;
  forall i in 1..recs.COUNT
    insert into t_orig_ref_cfg_tab_bak values recs(i);
    commit;
    exit when cur%NOTFOUND;
end loop;
 
close cur;
end;
/
 
posted on 2017-03-04 18:11  绿Z  阅读(2987)  评论(0)    收藏  举报