» 网友学堂 » Oracle教程 » 高手的Oracle大批量删除数据的方法
高手的Oracle大批量删除数据的方法
作者:ljjk5 发表时间:2007-11-26 16:45 阅读:309次 在百度搜索相关内容

批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。 下面是我的删除过程,我的数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。 首先创建一下过程,使用自制事务进行处理:
create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2)aspragma autonomous_transaction;n_delete number:=0;beginwhile 1=1 loopEXECUTE IMMEDIATE'delete from '││p_TableName││' where '││p_Condition││' and rownum <= :rn'USING p_Count;if SQL%NOTFOUND thenexit;elsen_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;

#Advertisement