学院首页>网络编程>ORACLE>案例讨论:批量删除Oracle数据库的数据

案例讨论:批量删除Oracle数据库的数据

作者:unknown 来源:IT专家网 添加时间:2006-5-26 9:52:19

在使用delete语句删除数据时,数据库是要做日志记录的,以便将来可以恢复数据,可是我在删除上百万条数据时,十分缓慢甚至死机,请问有没有什么好方法?

  网友观点一:

create or replace procedure delete_table
is
i number(10);
begin
  for x in (select * from emp where DEPTNO like 'a%')
  loop
   delete emp where emp.id = x.id
   i:=i+1;
   if i>1000 then
   commit;
   i:=0;
   end if;
  end loop;
exception
when others then
   dbms_out.put_line(sqlcode);
   rollback;
end delete_table;

  网友观点二:

这个是我平常用来批量删除数据,每500条数据提交一次。
DECLARE
CNT NUMBER(10):=0;
I NUMBER(10);
BEGIN
SELECT COUNT(*) INTO CNT FROM ep_arrearage_bak WHERE TO_CHAR(DF_DATE,'MM')='01';

FOR I IN 1..TRUNC(CNT/500)+1 LOOP
DELETE FROM ep_arrearage_bak WHERE TO_CHAR(DF_DATE,'MM')='01' AND ROWNUM<=500;
COMMIT;
END LOOP;
END;

第 1 页,共 2 页 [1] [2]
站内搜索