为所有用户赋予所有能够得到的栏目

------------------------title:为所有用户赋予所有能够得到的栏目-----------------------

------------------------------需求描述------------------------------

--系统包含三个级别的用户,每一个级别的用户看到的栏目不同,每一个级别对应一类组织机构。

--在实际使用时,某一类组织机构下的某个机构中可能拥有多个账户,每个账户拥有不同的栏目。

--为了测试方便,现需要筛选出每一个级别下的所有组织机构用户,

--并为每一个账户赋予该级别用户所应拥有的全部栏目。

------------------------------脚本实现------------------------------

--第一步,在系统中为一个特定用户赋予所有权限,并通过以下脚本获取该用户模块的所有ID

select t2.realname, t2.username, t3.caption, t1.catalogid

  from mvs_r_catalog_user t1

 inner join mvs_b_user t2 on t1.userid = t2.id

 inner join mvs_d_catalog t3 on t1.catalogid = t3.id

 where t2.username = 'username';

 

--第二步,删除省级用户原有的所有权限(依赖于4.3.7的账户),并使用使用第一步的特定账户验证测试。

delete from mvs_r_catalog_user t1

 where t1.userid in

       (select t.id

          from mvs_b_user t

         inner join mvs_b_organise_frame t1 on t.organise_frame_id = t1.id

                                           and t1.levels = 2

                                           and t.isvalid = 1

                                           and t.status = 1

                                           and t.rowid =

                                               (select max(rowid)

                                                  from mvs_b_user u

                                                 where t.organise_frame_id =

                                                       u.organise_frame_id));

                                                      

--第三步,为所有省级账户赋权(依赖于4.3.7的账户),并使用使用第一步的特定账户检查。

Declare

  --定义游标变量userid,其类型与用户表的id类型一致

  userid mvs_b_user.id%type;

  --定义游标cursor_getuserid

  cursor cursor_getuserid is

    select t.id

      from mvs_b_user t

      --mvs_b_user表与mvs_b_organise_frame关联,

      --通过mvs_b_organise_framelevels字段取得某一特定级别的用户

     inner join mvs_b_organise_frame t1 on t.organise_frame_id = t1.id

                                       and t1.levels = 2

                                       and t.isvalid = 1

                                       and t.status = 1

                                       --同一个organise_frame_id下,存在多个用户账户,此处

                                       --使用max(rowid)获取每个organise_frame_id下的一个账户

                                       and t.rowid =

                                           (select max(rowid)

                                              from mvs_b_user u

                                             where t.organise_frame_id =

                                                   u.organise_frame_id);

begin

  --打开游标

  open cursor_getuserid;

  --循环开始

  loop

    --获取游标值,并赋予userid变量

    fetch cursor_getuserid

      into userid;

    --在找到最后一个userid后结束

    exit when cursor_getuserid%notfound;

    --将获取到的userid插入用户权限表mvs_r_catalog_user

    --其中catalogid为显示的值,即上述第一步获取到的值

    insert into mvs_r_catalog_user

      (id, catalogid, userid)

    values

      (seq_mvs_r_catalog_user.nextval, 34, userid);

  --循环结束   

  end loop;

  --关闭游标

  close cursor_getuserid;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值