- create or replace procedure newsadmin.p_bulkdel_newlog(p_edate in date,
- p_sdate in date default to_date('2012-06-01','yyyy-mm-dd')) is
- TYPE ARRROWID IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
- tbrows ARRROWID;
- row PLS_INTEGER;
- cursor delete_table is
- select rowid
- from newsadmin.newlog
- where EITIME <= p_edate
- and eitime >= p_sdate;
- BEGIN
- open delete_table;
- loop
- fetch delete_table bulk collect
- into tbrows limit 2500;
- FORALL row IN 1 .. tbrows.count()
- DELETE newsadmin.newlog WHERE rowid = tbrows(row);
- commit;
- -- sys.dbms_lock.sleep(1);
- exit when delete_table%notfound;
- end loop;
- close delete_table;
- END;
oracle procedure案例二--delete
原创
©著作权归作者所有:来自51CTO博客作者freedomzm的原创作品,请联系作者获取转载授权,否则将追究法律责任
看点如下:
1.变量设置初始值
2.使用bulk collect一次性取数据到内存,每2500条提交一次,一来避免快照过旧的报错,二来提高效率不像游标一条条取
3.通过rowid做删除操作
上一篇:Oracle迁移索引
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
如何提高mysql delete速度
提高mysql delete速度的方法简要介绍。
sql 数据 MySQL