Oracle策略可以限制查询、修改、删除、新增等操作,刚接触,对查询做一个测试:
创新互联公司专注于苏州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供苏州营销型网站建设,苏州网站制作、苏州网页设计、苏州网站官网定制、微信小程序开发服务,打造苏州网络公司原创品牌,更为您提供苏州网站排名全网营销落地服务。
用法如下:
begin
-- Call the procedure
sys.dbms_rls.add_policy(object_schema => :数据表(或视图)所在的Schema名称/用户,
object_name => :数据表(或视图)的名称,
policy_name => :policy的名称
function_schema => :返回Where子句的函数所在Schema名称/用户,
policy_function => :返回Where子句的函数名称,
statement_types => :要使用该Policy的DML类型,如'Select,Insert,Update,Delete',
update_check => 仅适用于Statement_Type为'Insert,Update',值为'True'或'False',
enable => 是否启用,值为'True'或'False',
static_policy => 默认值为FALSE。如果它被设置为TRUE则所有用户启用该策略,sys或特权用户例外。
policy_type => :默认值是null,意味着static_policy的值决定,在这里指定任何策略将覆盖static_policy的值。
long_predicate => long_predicate,
sec_relevant_cols => :敏感的字段名称,
sec_relevant_cols_opt => :设置为dbms_rls.ALL_ROWS来显示所有的行,敏感的列的值为null);
end;
创建函数:
- create or replace function f_policy
- (
- p_owner in varchar2,--两个参数必须要有,名字可以不一样
- p_object in varchar2
- ) return varchar2 as
- v_sql varchar2(2000);
- begin
- v_sql := lower(sys_context('USERENV', 'CURRENT_SQL', 4000));
- if instr(v_sql, ' where ') = 0 then
- return 'deptno=10';
- --raise_application_error(-20001, '未包含where条件');
- end if;
- return '';
- end;
添加策略(需在sys下添加):
- begin
- dbms_rls.add_policy(object_schema => 'scott', object_name => 'emp',
- policy_name => 'sal', function_schema => 'scott',
- policy_function => 'f_policy', sec_relevant_cols => 'sal');
- end;
该策略和函数搭配,限制了如果关于emp表的dml语句中未包含where下自动添加where dept=10的条件,示例如下:
select * from emp;
删除策略:
- begin
- sys.dbms_rls.drop_policy(object_schema => 'scott',
- object_name => 'emp',
- policy_name => 'sal');
- end;
本文题目:Oracle策略相关
地址分享:http://www.mswzjz.cn/qtweb/news7/509157.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能