当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle大批量删除数据方法一
发布时间:2010/10/8 10:41:15 来源:www.xue.net 编辑:城市总裁吧
 批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。

  下面是我的删除过程,我的数据表可以通过主键删除,测试过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;

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15080520号-20
珠峰网 版权所有 All Rights Reserved