私の手続きです。Oracleプロシージャログイベント
CREATE OR REPLACE PROCEDURE "CUSTOMER_INCREMENTAL" (
IS
BEGIN
INSERT INTO PROC_LOG (START_DATE,OUTPUT) VALUES (sysdate,Process Started);
INSERT INTO NDB_AML_CUSTOMER
(ID, TITLE,...)
SELECT ID, TITLE,...
FROM NDB_CUSTOMER_NEW
WHERE DATE_TIME > (SELECT RUN_DATE FROM CHECK_POINT WHERE TABLE_NAME = 'NDB_CUSTOMER_NEW');
UPDATE CHECK_POINT SET RUN_DATE = SYSDATE WHERE TABLE_NAME = 'NDB_CUSTOMER_NEW';
COMMIT;
INSERT INTO PROC_LOG (END_DATE,OUTPUT) VALUES (sysdate,Process Ended);
END;
/
ログイベントをテーブルに出力したいとします。このように、開始日は&と呼ばれ、「プロセスが開始されました」と呼ばれ、プロセス終了日は&です。例外時にエラーメッセージが表示されます。 Log_table、開始日、終了日の3つの列&出力。専門家からのインプットを探しています。
ロギングプロシージャは、通常、トランザクション全体をロールバックする必要があるときにロールバックされないようにするために、 'pragma autonomous transaction'を使用します。彼らはトランザクション全体をコミットしません。それ以外の場合は、あなたの質問は何ですか? –
プロシージャ内のイベントを処理したい、プロシージャの実行が開始されたとき、終了したとき、例外でエラーメッセージがあったときなど。ソース表名のような例外では、プロシージャーはレコードをまったく選択しないため、ロールバックは必要ありません。 –