ENABLE_POLICY¶
该过程用于启用或禁用一条安全策略
声明:
PROCEDURE ENABLE_POLICY(OBJECT_SCHEMA IN VARCHAR2 := NULL,
OBJECT_NAME IN VARCHAR2,
POLICY_NAME IN VARCHAR2,
ENABLE IN BOOLEAN := TRUE );
结构:
| 参数 | 说明 |
|---|---|
| OBJECT_SCHEMA | OBJECT_NAME所在模式名(不指定则会使用当前用户名) |
| OBJECT_NAME | 已添加此策略的表名 |
| POLICY_NAME | 要禁用的策略的名称 |
| ENABLE | 默认为TRUE,表示启用策略 |
示例:
DROP TABLE TEST CASCADE;
CREATE TABLE TEST(ID INT, V1 INT);
INSERT INTO TEST VALUES(1, 123);
INSERT INTO TEST VALUES(2, 234);
DROP FUNCTION PTEST(OBJECT_SCHEMA VARHCAR2, OBJECT_NAME VARCHAR2);
CREATE OR REPLACE FUNCTION PTEST(OBJECT_SCHEMA VARCHAR2, OBJECT_NAME VARCHAR2)
RETURN VARCHAR2 IS
BEGIN
--这里简单的返回一个条件
RETURN 'ID != 1';
END;
/
SELECT * FROM TEST ORDER BY ID;
ID(int) |V1(int) |
--------------------------
1 |123 |
--------------------------
2 |234 |
总数目:2
EXEC DBMS_RLS.ADD_POLICY(
object_name => 'TEST',
policy_name => 'POLICY_1',
policy_function => 'PTEST',
statement_types => 'INSERT,UPDATE,DELETE,SELECT');
SELECT * FROM TEST ORDER BY ID;
ID(int) |V1(int) |
--------------------------
2 |234 |
总数目:1
EXEC DBMS_RLS.ENABLE_POLICY(
object_name => 'TEST',
policy_name => 'POLICY_1',
enable => 'FALSE');
SELECT * FROM TEST ORDER BY ID;
ID(int) |V1(int) |
--------------------------
1 |123 |
--------------------------
2 |234 |
总数目:2
EXEC DBMS_RLS.DROP_POLICY(
object_name => 'TEST',
policy_name => 'POLICY_1');