也许一个愚蠢的问题,而是说我有像这样(大大简化为简洁起见)一个记录程序:数据库日志记录在日志记录过程
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