首页 > 应用开发 > IT综合 > fga使用时参数handler注意事项
http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/cfgaudit.htm#sthref1774
参考文档:http://space.itpub.net/519536/viewspace-700427
SQL> EXEC dbms_fga.add_policy (object_schema => 'TEST',object_name => 'T',policy_name => 'audit_T_salary1',audit_condition=> 'SALARY>=3000',audit_colu
mn => 'SALARY',handler_schema => 'TEST1',handler_module => 'PROC_TEST',enable => TRUE,statement_types => 'SELECT' );
PL/SQL 过程已成功完成。
--=============================
test1用户下的过程如下:
CREATE OR REPLACE PROCEDURE PROC_TEST
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('TEST!');
END;
--=============================
SQL> select * from t;
ERROR:
ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'PROC_TEST' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
未选定行
--==============================
错误的原因在于fga中handler触发的过程需要定义参数,调整test1下的过程proc_test如下,错误消除:
CREATE OR REPLACE PROCEDURE PROC_TEST(schema_name varchar2,table_name varchar2,policy varchar2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('TEST!');
END;
--===============================
SQL> select * from t;
ID NAME SALARY
---------- ---------- ----------
1 a 1000
2 a 3000
SQL> set serveroutput on
SQL> select * from t;
ID NAME SALARY
---------- ---------- ----------
1 a 1000
2 a 3000
TEST!
SQL>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-1051508/ ,如需转载,请注明出处,否则将追究法律责任。