考试网 >> IT认证 >> Oracle >> Oracle指导 >> Oracle大批量删除数据方法

Oracle大批量删除数据方法

发布时间:2006-06-28 09:52     点击:
分页:[1] 2 3  下一页

  批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。

  

  下面是我的删除过程,我的数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。

  

  首先创建一下过程,使用自制事务进行处理:

  

  create or replace procedure delBigTab

  (

  p_TableName in varchar2,

  p_Condition in varchar2,

  p_Count in varchar2

  )

  as

  pragma autonomous_transaction;

  n_delete number:=0;

  begin

  while 1=1 loop

  EXECUTE IMMEDIATE

  ’delete from ’||p_TableName||’ where ’||p_Condition||’ and rownum <= :rn’

  USING p_Count;

  if SQL%NOTFOUND then

  exit;

  else

  n_delete:=n_delete + SQL%ROWCOUNT;

  end if;

  commit;

  end loop;

  commit;

  DBMS_OUTPUT.PUT_LINE(’Finished!’);

  DBMS_OUTPUT.PUT_LINE(’Totally ’||to_char(n_delete)||’ records deleted!’);

  end;

  

  以下是删除过程及时间:

  SQL> create or replace procedure delBigTab

  2 (

  3 p_TableName in varchar2,

  4 p_Condition in varchar2,

  5 p_Count in varchar2

  6 )

  7 as

  8 pragma autonomous_transaction;

  9 n_delete number:=0;
分页:[1] 2 3  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有