------------------------title
:為所有使用者賦予所有能夠得到的欄目
-----------------------
------------------------------
需求描述
------------------------------ --
系統包含三個級別的使用者,每乙個級別的使用者看到的欄目不同,每乙個級別對應一類組織機構。 --
在實際使用時,某一類組織機構下的某個機構中可能擁有多個賬戶,每個賬戶擁有不同的欄目。 --
為了測試方便,現需要篩選出每乙個級別下的所有組織機構使用者, --
並為每乙個賬戶賦予該級別使用者所應擁有的全部欄目。
------------------------------
指令碼實現
------------------------------ --
第一步,在系統中為乙個特定使用者賦予所有許可權,並通過以下指令碼獲取該使用者模組的所有id。
select
t2.realname, t2.username, t3.caption, t1.catalogid
from
mvs_r_catalog_user t1
inner
join
mvs_b_user t2
ont1.userid = t2.id
inner
join
mvs_d_catalog t3
ont1.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
ont.organise_frame_id = t1.id
andt1.levels = 2
andt.isvalid = 1
andt.status = 1
andt.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
ont.organise_frame_id = t1.id
andt1.levels = 2
andt.isvalid = 1
andt.status = 1
--同乙個
organise_frame_id
下,存在多個使用者賬戶,此處 --
使用max(rowid)
獲取每個
organise_frame_id
下的乙個賬戶
andt.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); --
迴圈結束
endloop;
--關閉游標
close
cursor_getuserid;
end;
得到所有使用者儲存過程及引數列表
alterproceduregetdatabaseinfo9 asselect casewhenb.colorder 1orb.colorderisnullthena.nameelse end asn 表名 b.nameasn 欄位名 c.nameasn 資料型別 b.precasn 長度 case...
得到所有使用者儲存過程及引數列表
alter procedure getdatabaseinfo9 as select case when b.colorder 1 or b.colorder is null then a.name else end as n 表名 b.name as n 欄位名 case when c.name ...
如何檢視授權的所有使用者
如何檢視授權的所有使用者 select distinct concat user user,host,as query from mysql.user 撤銷已經賦予給 mysql 使用者許可權的許可權。revoke 跟 grant 的語法差不多,只需要把關鍵字 to 換成 from 即可 revok...