首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle的批量剔除数据表记录

2012-09-21 
oracle的批量删除数据表记录对于数据库表中有海量的数据记录的情况。直接用delete命令删除的话,非常的慢。以

oracle的批量删除数据表记录
对于数据库表中有海量的数据记录的情况。直接用delete命令删除的话,非常的慢。
以下是一个方法来批量删除数据记录:

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   /*   示例 :    begin         delbigtab('sb_user', 'deleted = 1', '500');   end;   */   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 delbigtab;/

热点排行