oracle dml触发器 获取当前执行sql语句,oracle9i自动通过trigger捕获DML 语句
SQL> create table t1(a number);表已创建。SQL> create table t_sql(username varchar2(30),2 client_ip varchar2(20),sql_text varchar2(4000),3 table_name varchar2(30),owner varchar2(30));表已创建。SQL> cr..
SQL> create table t1(a number);
表已创建。
SQL> create table t_sql(username varchar2(30),
2 client_ip varchar2(20),sql_text varchar2(4000),
3 table_name varchar2(30),owner varchar2(30));
表已创建。
SQL> create or replace trigger capt_sql
2 BEFORE DELETE OR INSERT OR UPDATE ON t1
3 declare
4 n number;
5 stmt varchar2(4000);
6 sql_text ora_name_list_t;
7 begin
8 n := ora_sql_txt(sql_text);
9 FOR i IN 1..n LOOP
10 stmt := stmt || sql_text(i);
11 END LOOP;
12
13 insert into t_sql(USERNAME,CLIENT_IP,SQL_TEXT,TABLE_NAME,OWNER)
14 values(user,sys_context('userenv','ip_address'),stmt,'T1','RAINY');
15
16 end;
17 /
触发器已创建
SQL>
SQL> insert into t1 values(1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t_sql
2 ;
USERNAME CLIENT_IP
------------------------------ --------------------
SQL_TEXT
----------------------------------------------------
TABLE_NAME OWNER
------------------------------ ---------------------
SYSTEM
insert into t1 values(1)
T1 RAINY
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)