------------------------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_frame的levels字段取得某一特定级别的用户
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;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shwonder/archive/2010/07/15/5738095.aspx
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论2 条评论
2010-07-28 08:42
2010-07-27 19:11