次の挿入を使用してテーブルに書き込むOracle10gでロギングプロシージャを作成しています。
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
。
例:
これらの2つの手順を呼び出すと:
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;
insdieメソッドからlog_test
/TestProc1
およびlog_test
/を評価できるようにしたいと思います。TestProc2
write_exec_log