質問
前提
Oracle DatabaseとAccessを用いた基幹システムで、実行SQL文(DML)をログとして保存したい。
実現したいこと
以下のOracle公式サイトを参考にトリガーを作成しました。
https://docs.oracle.com/cd/E16338_01/appdev.112/b56260/triggers.htm
Accessでテーブルに対しINSERT, UPDATE, DELETE処理を行った際に、指定のテーブルのカラムに、実行したSQL文(DML)をINSERTしたいです。
発生している問題・エラーメッセージ
実行SQL文
(CUI SQL*PLUSにて実行)
SQL
1UPDATE M0050_USER SET USER_NAME = ‘Johnny’ WHERE USER_ID = ‘12345’;
エラーメッセージ
行1でエラーが発生しました。: ORA-06502: PL/SQL: 数値または値のエラーが発生しました ORA-06512: “ABCUSR.TRIGGER_TEST”, 行9 ORA-04088: トリガー’ABCUSR.TRIGGER_TEST’の実行中にエラーが発生しました
該当のソースコード
SQL
1CREATE TABLE event_table (col VARCHAR2(2030));
PL/SQL
1CREATE OR REPLACE TRIGGER trigger_test 2 AFTER INSERT OR UPDATE OR DELETE 3 ON M0050_USER 4 5DECLARE 6 sql_text ora_name_list_t; 7 n PLS_INTEGER; 8 v_stmt VARCHAR2(2000); 9 10BEGIN 11 n := ora_sql_txt(sql_text); 12 13 FOR i IN 1..n LOOP 14 v_stmt := v_stmt || sql_text(i); 15 END LOOP; 16 17 INSERT INTO event_table VALUES (‘text of triggering statement: ‘ || v_stmt); 18 19END;
試したこと
トリガー発動条件を、ステートメントエラーが発生した時、に変更し、敢えてステートメントエラーが発生するSQL文を実行したところ、プログラム通りの結果が返ってきました。
この事から、上記のプログラムでは、DDLは取得できるが、DMLは取得できないのでは?と考えました。
補足情報(FW/ツールのバージョンなど)
OS : Windows 7 32bit
RDBMS : Oracle Database 11.2.0.4

下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。