DROP_POLICY

该过程用于删除一条安全策略

声明:

PROCEDURE DROP_POLICY(OBJECT_SCHEMA IN VARCHAR2 := NULL,
                      OBJECT_NAME   IN VARCHAR2,
                      POLICY_NAME   IN VARCHAR2);

结构:

参数 说明
OBJECT_SCHEMA OBJECT_NAME所在模式名(不指定则会使用当前用户名)
OBJECT_NAME 已添加此策略的表名
POLICY_NAME 要删除的策略的名称

示例:

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');