利用存储过程分步删除数据

来源:互联网 发布:opencv python 教程 编辑:程序博客网 时间:2024/05/29 07:47
create or replace procedure proc_del_data(  p_TableName       in    varchar2,  p_Condition       in    varchar2,  p_Count        in    varchar2  )  as  pragma autonomous_transaction;  n_delete number:=0;  begin      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!');      EXCEPTION         WHEN OTHERS THEN          DBMS_OUTPUT.PUT_LINE(SQLCODE||'::'||SUBSTR(SQLERRM,1,300));          ROLLBACK;     END;end;  
0 0