我在 Oracle 10g 中编写了一个日志记录过程,它使用以下插入写入表:
INSERT INTO EXEC_LOG VALUES (
(SELECT SYS_CONTEXT('USERENV','SESSIONID') sessionid FROM dual),
strPackage, strProcedure, strEventType, strEventLevel, SYSDATE, strMessage
);
这个过程在多个不同的包/过程中重复使用,但是现在的方式是,程序员必须将他们的包/过程名称传递给日志记录过程(strPackage
和strProcedure
)。
我想知道 Oracle 中是否有 av$ 视图或其他东西可以告诉我这个过程是从哪个包/过程中调用的,从而消除了程序员传入strPackage
and的需要strProcedure
。
例子:
如果我调用这两个程序:
BEGIN
log_test.testproc1;
log_test.testproc2;
END;
从这个包:
CREATE OR REPLACE PACKAGE BODY log_test IS
PROCEDURE TestProc1 IS
BEGIN
write_exec_log( ... );
END TestProc1;
PROCEDURE TestProc2 IS
BEGIN
write_exec_log( ... );
END TestProc2;
END log_test;
我希望能够评估log_test
/TestProc1
和log_test
/TestProc2
从 insdiewrite_exec_log
方法。