也許一個愚蠢的問題,而是說我有像這樣(大大簡化爲簡潔起見)一個記錄程序:數據庫日誌記錄在日誌記錄過程
PROCEDURE LOGGER (
p_TYPEOFLOG IN VARCHAR2,
p_LOGSEVERITY IN VARCHAR2,
p_SESSIONID IN VARCHAR2)
AS
v_timestamp DATE := SYSDATE;
BEGIN
PRAGMA autonomous_transaction;
BEGIN
INSERT INTO Log (
TypeOfLog, LogSeverity, SessionID, TimeOfAction)
VALUES (
p_TYPEOFLOG, p_LOGSEVERITY, p_SESSIONID, v_timestamp);
COMMIT;
END;
END LOGGER;
現在,通常我會換行開始/結束位了一個異常處理程序,它將調用此記錄程序。但是如果我已經在記錄儀中,我該怎麼辦?如果其他人爲空並跳過它,我是否僅僅執行異常?我是否嘗試再次調用記錄程序?這裏的標準是什麼?
如果您再次調用Logger過程,並再次失敗 - 如果它是一個更廣泛的問題,如空間用完,請說 - 如何防止無限遞歸添加到您的問題? Oracle可能會試圖終止遞歸,但是你也會嘗試記錄它... – 2014-11-06 16:28:59