回到考试中心首页|兰州学生网LOGO
首页  |  外语考试  |  IT认证  |  基础教育  |  甘肃省专升本  |  学历考试  |  硕士学历  |  公务员  |  会计考试  |  职业资格  |  医学医药  |  建筑工程
会员登录
热门文章
·二级建造师模拟试题一套
·公务员面试自我介绍范文
·践行社会主义荣辱观 党课讲稿
·八荣八耻,从我做起!
·临床执业医师考试真题完全版(一)
·学习八荣八耻心得体会(完善版)
·八荣八耻演讲稿
·八荣八耻歌(歌词)
·英文自我介绍
·中学:教师资格认证考试全真模拟试卷和答案
·八荣八耻中学生演讲稿
·小学教师资格考试教育学仿真试题之一
·八荣八耻手抄报内容
·《八荣八耻歌》歌词 伴奏及曲牌
·暑期实践报告
广告推荐
批量删除Oracle数据库的数据(1)
作者: 来源: 责任编辑: 更新日期:2006-3-27 16:16:51 浏览:
批量删除Oracle数据库的数据(1)

在使用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;
 

 

打印本文 收藏本文 返回顶部 关闭窗口
   考试中心分类导航
      外语考试 | 英语四六级 | 专四专八 | 职称英语 | 口译笔译 | 商务英语 | 实用英语 | 托福 | 雅思 | GRE | LSAT | PETS | GMAT
      IT认证 | 计算机等级 | 软件程序员 | 微软认证 | 思科认证 | Oracle | Linux | JAVA
      甘肃省专升本 | 专升本动态 | 招生计划 | 考试大纲 | 专升本试题    基础教育 | 中考 | 高考    学历考试 | 成人高考 | 自学考试
      硕士学历 | 考研 | MBA/EMBA | 在职硕士 | 法律硕士 | 会计硕士 | 工程硕士    公务员 | 考试动态 | 考试指导 | 考试真题 | 模拟题 | 技巧心得
      医学医药 | 执业护士 | 执业医师 | 执业药师    会计考试 | 资产评估 | 经济师 | 从业资格 | 会计职称 | 注会 | 注税 | 高级会计 | ACCA/CAT | 精算师
      职业资格 | 保险考试 | 报关员 | 外销员 | 物流师 | 报检员 | 司法考试 | 律师考试 | 商务师 | 人力资源 | 电子商务 | 导游资格 | 证券考试 | 教师资格
      建筑工程 | 岩土师 | 室内设计师 | 质量资格 | 房产估价 | 土地估价 | 建造师 | 造价师 | 建筑师 | 结构师 | 监理师 | 咨询师 | 城市规划 | 安全工程师
设为首页   |    收藏本站   |    网站帮助   |    网站地图   |    意见反馈   |    关于我们   |    广告服务   |    联系办法
陇ICP备05005179 不良信息举报