oracle 某个范围,Oracle 函数 “数据控制,指定某些人只能查看他权限范围内的信息”...

此篇博客介绍了如何使用Oracle函数work_plan_mask,通过SYS_CONTEXT获取用户权限信息,实现数据控制,仅允许特定人员查看其权限范围内的工作计划。通过角色检查、树状查询和临时表操作,确保了信息的安全性。
摘要由CSDN通过智能技术生成

5268f80b9b1e01f982625ef6fac83ca1.png

create or replace function work_plan_mask (p_schema VARCHAR2,p_table VARCHAR2)2

3 return Varchar2 AS --数据控制,指定某些人只能查看他权限范围内的信息

4

5 v_predicate VARCHAR2(1000) := ‘1=2‘;6 v_personcode Personnel.Person_Code%TYPE := SYS_CONTEXT(get_context_name,‘PERSON_CODE‘);7 v_user_name work_plan.reporter%type := SYS_CONTEXT(get_context_name,‘APP_USER_NAME‘); --获取当前账号

8 v_number NUMBER;9

10 cursor get_work_plan_role is

11 select count(*)12 fromapplication_roles13 WHERE role_name = ‘work_plan_search‘ AND username = v_user_name; --work_plan_search:系统里(给了权限)的角色

14

15 BEGIN

16

17 IF v_personcode in(‘00013‘,‘00016‘) THEN --指定这几个人可看

18 RETURN ‘1=1‘; --返回 true

19 END IF;20

21 insert into person_code_temp --将下面查询出来的结果插入person_code_temp(临时表)表中

22 SELECT p.PERSON_CODE --树状查询 (查出当前编号以及下一级、下下一级...等 编号,比如:总经理以及所有下属的编号)

23 FROMPERSONNEL p24 CONNECT BY p.MANAGER =PRIOR p.PERSON_CODE25 START WITH p.PERSON_CODE =v_personcode;26

27 openget_work_plan_role;28 fetch get_work_plan_role intov_number;29 closeget_work_plan_role;30

31 v_predicate := ‘reporter =‘‘‘ || v_user_name || ‘‘‘OR‘ || v_number || ‘> 0‘ ||

32 ‘OR INSERT_USER =‘‘‘ || v_user_name || ‘‘‘‘ ||

33 ‘OR INSERT_USER IN ( SELECT get_username(P.PERSON_CODE) FROM person_code_temp P)‘;34

35 RETURNv_predicate;36 end work_plan_mask;

这个函数 SYS_CONTEXT(),可以参考 http://blog.csdn.net/rfb0204421/article/details/7861332  或  http://blog.csdn.net/kadwf123/article/details/8065673

Oracle 函数 “数据控制,指定某些人只能查看他权限范围内的信息”

标签:个人   sdn   查询   get   int   nbsp   with   span   pen

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/dshore123/p/7825384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值