我想創建一個數據庫過程來截斷一個表,但是如果那個截斷失敗,暫時等待並重新運行截斷。我無法鎖定表格或複製表格,然後刪除舊錶格,所以這種更困難的方法是我唯一的選擇。循環過程來截斷一個表SQL Developer
我得到一個PLS-00382錯誤我下面的代碼並難倒問題:
CREATE OR REPLACE PROCEDURE TRUNCATE_ROUTING_CACHE AS
runcount NUMBER := 0;
status varchar2(10);
BEGIN
EXECUTE IMMEDIATE 'truncate table routing_cache';
IF VALUE_ERROR THEN
status := 'FAIL';
WHILE status = 'FAIL' AND runcount < 3
LOOP
sys.dbms_lock.sleep(120);
EXECUTE IMMEDIATE 'truncate table routing_cache';
IF VALUE_ERROR THEN
runcount := runcount + 1;
ELSIF status = 'FAIL' THEN
status := 'SUCCESS';
END IF;
END LOOP;
ELSIF runcount = 0 THEN
status := 'SUCCESS';
runcount := runcount + 1;
END IF;
END;
太棒了,我篡改了一下,只跑了3次。我計劃添加額外的代碼來報告它運行的次數等。 –