怎样在Oracle的Trigger中使用v$session等Dynamic Performance View

[复制链接]
查看11 | 回复1 | 2008-10-20 21:31:23 | 显示全部楼层 |阅读模式
这样一个SQL:
insert into log_v_session select * from v$session;
注:log_v_session是自己建的表,结构和v$session一样
直接跑没有问题,但是放到一个On Delete Trigger里面,trigger就编译不过去,总是提示v$session这个Table or view does not exist。
v$session不能在Trigger里面用吗?还是权限问题?
用这个东西是想在一条数据被删除的时候记录下这个删除操作的session信息和删除用的Sql,有没有其他办法?
原因很简单,就是权限问题,DBA最后给搞定了

回复

使用道具 举报

千问 | 2008-10-20 21:31:23 | 显示全部楼层
9i后,可利用系统定义事件ORA_SQL_TXT属性,返回触发触发器的SQL语句。请看例子: (T可测试表,你可随便输入示例值,其中T_LOG用来记录SQL语句,当然你也可扩充其他信息).SQL> CREATE TABLE T_LOG (EXECUTE_DATE DATE, SQL_STATMENT CLOB);SQL> CREATE OR REPLACE TRIGGER T 2 BEFORE DELETE ON T3 FOR EACH ROW4 DECLARE5 V_SQL_OUT ORA_NAME_LIST_T;6 V_NUM NUMBER;7 V_SQL_STATMENT VARCHAR2(3276...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行