0

无论如何,是否有输入参数值(如果有)绑定到从触发器导致数据库错误的语句?无论 SQL 中的语句是否属于过程/函数调用。

我正在尝试在架构级别设置错误日志,这很好。但是我也找不到记录参数值的方法,这真的很有帮助。

到目前为止,我使用的触发器看起来像这样......

CREATE OR REPLACE TRIGGER t_error
   AFTER SERVERERROR
   ON SCHEMA
DECLARE
   PRAGMA AUTONOMOUS_TRANSACTION;
   l_sql       ora_name_list_t;

   l_sequence  NUMBER;
   l_statement CLOB;
   l_count     NUMBER;
   l_ts        TIMESTAMP (6);
BEGIN
   l_count := ora_sql_txt (l_sql);

   IF l_count >= 1 THEN
      FOR i IN 1 .. l_count LOOP
         l_statement := l_statement || l_sql (i);
      END LOOP;
   END IF;

   INSERT INTO oralog
        VALUES (
           seq_oralog.NEXTVAL,
           dbms_utility.format_call_stack,
           dbms_utility.format_error_stack,
           dbms_utility.format_error_backtrace,
           l_statement,
           SYSTIMESTAMP
        );

   COMMIT;
END t_error;
/

谢谢

4

0 回答 0