【发布时间】:2012-05-01 02:46:26
【问题描述】:
我正在 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 和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;
我希望能够从 write_exec_log 方法中评估 log_test/TestProc1 和 log_test/TestProc2。
【问题讨论】: