為所有使用者賦予所有能夠得到的欄目

2021-05-23 01:57:57 字數 3018 閱讀 6597

------------------------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...