• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何有條件的分步刪除數據表中的記錄

    發表于:2007-05-25來源:作者:點擊數: 標簽:有條件分步刪除數據表中的
    如何有條件的分步刪除數據表中的記錄 作者:eygle 出處: http://blog.eygle.com 日期:February 22, 2005 自己動手,豐衣足食 | Blog首頁 有時候我們需要分配刪除數據表的一些記錄,分批提交以減少對于Undo的使用,本文提供一個簡單的存儲過程用于實現該邏輯。

    如何有條件的分步刪除數據表中的記錄

    作者:eygle

    出處:http://blog.eygle.com

    日期:February 22, 2005

    « 自己動手,豐衣足食 | Blog首頁


    有時候我們需要分配刪除數據表的一些記錄,分批提交以減少對于Undo的使用,本文提供一個簡單的存儲過程用于實現該邏輯。
    你可以根據你的需要進行適當調整,本例僅供參考:

    SQL> create table test as select * from dba_objects;
    
    Table created.
    
    SQL> create or replace procedure deleteTab
      2  /**
      3   ** Usage: run the script to create the proc deleteTab
      4   **        in SQL*PLUS, type "exec deleteTab('Foo','ID>=1000000','3000');"
      5   **        to delete the records in the table "Foo", commit per 3000 records.
      6   **      
      7   **/
      8  (
      9    p_TableName    in    varchar2,    -- The TableName which you want to delete from
     10    p_Condition    in    varchar2,    -- Delete condition, such as "id>=100000"
     11    p_Count        in    varchar2     -- Commit after delete How many records
     12  )
     13  as
     14   pragma autonomous_transaction;
     15   n_delete number:=0;
     16  begin
     17   while 1=1 loop
     18     EXECUTE IMMEDIATE
     19       'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'
     20     USING p_Count;
     21     if SQL%NOTFOUND then
     22     exit;
     23     else
     24          n_delete:=n_delete + SQL%ROWCOUNT;
     25     end if;
     26     commit;
     27   end loop;
     28   commit;
     29   DBMS_OUTPUT.PUT_LINE('Finished!'); 
     30   DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');
     31  end;
     32  /
    
    Procedure created.
    
    
    SQL> insert into test select * from dba_objects;
    
    6374 rows created.
    
    SQL> /
    
    6374 rows created.
    
    SQL> /
    
    6374 rows created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> exec deleteTab('TEST','object_id >0','3000')
    Finished!
    Totally 19107 records deleted!
    
    PL/SQL procedure suclearcase/" target="_blank" >ccessfully completed.
    
    

    很簡單,但是想來也有人可以用到。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>