CREATE OR REPLACE PROCEDURE p_del_table
--功能:循環刪除表數據,避免使用大量回滾段
--設計:
--編碼:
--日期:2006年06月07日
(
iTabName VARCHAR2 --輸入要刪除的表名
)
AS
vSql VARCHAR2(2000); --動態SQL
vTabName VARCHAR2(100);
BEGIN
--vTabName:=TRIM(iTabName);
vTabName:='vtestjhtm';
LOOP
--循環刪除數據,每次刪除1000條然后commit
vSql:='DELETE FROM '||vTabName||' WHERE ROWNUM<1000';
--執行動態SQL
EXECUTE IMMEDIATE vSql;
COMMIT;
--刪除的表數據為空時,退出
EXIT WHEN SQL%ROWCOUNT=0;
END LOOP;
--提示刪除成功
dbms_output.put_line('DELETE TABLE '||vTabName||' Successfully!');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
--提示刪除失敗,并提示錯誤信息
dbms_output.put_line('DELETE TABLE '||vTabName||' Fail!');
dbms_output.put_line('Error Message is: '||substr(SQLERRM,1,200));
END;