oracle 策略POLICY学习

1-- 1、创建测试表 2create table TEST_POLICY 3( 4  USERNAME VARCHAR2(10), 5  PASSWORD NUMBER(10) 6); 7insert into TEST_POLICY values('a',30); 8insert into TEST_POLICY values('b',20); 9insert into TEST_POLICY values('c',40); 10commit; 11--2、创建策略约束函数,表只可输入密码为40的用户,其他用户将被删除 12CREATE OR REPLACE Function Fn_GetPolicy(P_Schema in varchar2, 13                                        P_Object in varchar2) 14  return varchar2 is 15  L_PREDICATE VARCHAR2(1000) := ''; 16Begin 17  L_PREDICATE := 'password=40'; 18  Return L_PREDICATE; 19end Fn_GetPolicy; 20--3、创建策略 21declare 22Begin 23  Dbms_Rls.Add_Policy(Object_Schema   => 'SCOTT', --数据表(或视图)所在的Schema名称  24                      Object_Name     => 'TEST_Policy', --数据表(或视图)的名称  25                      Policy_Name     => 'T_TestPolicy', --POLICY的名称,主要用于将来对Policy的管理  26                      Function_Schema => 'SCOTT', --返回Where子句的函数所在Schema名称  27                      Policy_Function => 'Fn_GetPolicy', --返回Where子句的函数名称  28                      Statement_Types => 'Select,Insert,Update,Delete', --要使用该Policy的DML类型,如'Select,Insert,Update,Delete'  29                      Update_Check    => True, --仅适用于Statement_Type为'Insert,Update',值为'True''False'  30                      Enable          => True --是否启用,值为'True''False'  31                      ); 32end; 33--注:如果Update_Check设为'True',则用户插入的值不符合Policy_Function返回条件时,该DML执行返回错误信息。  34--现在就可以工作了: select * from TEST_POLICY ;  看看结果怎样, 是不是少了password<>40的数据了. 35--4、查看当前用户的策略 36SELECT * FROM USER_POLICIES; 37--5、删除策略 38DECLARE 39BEGIN 40  Dbms_Rls.drop_policy('SCOTT', --要删除的Policy所在的Schema 41                       'TEST_Policy', --要删除Policy的数据表(或视图)名称 42                       'T_TESTPOLICY' --要删除的Policy名称 43                       ); 44end;
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

oracle 策略POLICY学习 - HelloWorld