zoukankan      html  css  js  c++  java
  • oracle怎么捕获表上的DML语句(不包括select)语句)

    可以采用dml触发器,如

      CREATE OR REPLACE TRIGGER tr_capt_sql

      BEFORE DELETE OR INSERT OR UPDATE

      ON manager.test

      DECLARE

      sql_text ora_name_list_t;

      state_sql capt$sql.sql_text%TYPE;

      BEGIN

      FOR i IN 1..ora_sql_txt(sql_text) LOOP

      state_sql := state_sql || sql_text(i);

      END LOOP;

      INSERT INTO capt$sql(login_user,capt_time,ip_address,audsid,owner,table_name,sql_text)

      VALUES(ora_login_user,sysdate,sys_context('USERENV','IP_ADDRESS'),

      userenv('SESSIONID'),'MANAGER','TEST',state_sql);

      EXCEPTION

      WHEN OTHERS THEN

      sp_write_log('Capture DML Exception:'||SQLERRM);

      END tr_capt_sql;

      在创建以上触发器时要注意几点

      1、必须创建一个capt$sql的表,用来记录ddl的记录

    2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

  • 相关阅读:
    Palindrome Partitioning
    Minimum Path Sum
    Maximum Depth of Binary Tree
    Minimum Depth of Binary Tree
    Unique Binary Search Trees II
    Unique Binary Search Trees
    Merge Intervals
    Merge Sorted Array
    Unique Paths II
    C++ Primer Plus 笔记第九章
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11113426.html
Copyright © 2011-2022 走看看