熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

確定用戶是否屬於某個角色

2022-06-13   來源: Oracle 

  對數據庫正常功能的訪問常常取決於賦予指定用戶的權利例如管理人員可能需要(一定的)權限來運行特定的查詢或者存儲過程而向他們進行報告的用戶則沒有(這一權限)對於一個很小的機構而言你可以為具體的用戶賦予具體的權利但是隨著用戶數量的增長這種方法會變得越來越難以處理即使只有個用戶維護工作也會成為你的惡夢
  
  包含我們感興趣數據的表格是sysusers和sysmembers前面一個表格包含有關於用戶和角色的數據而這兩者由IsSQLRole這個數據列來區分如果數據行表示的是一個角色而不是一個用戶那麼IsSQLRole數據列就包含有下面的代碼列出了所有的用戶和角色
  
  SELECT Member = Usersname Role = RolesName
  FROM sysusers Users sysusers Roles sysmembers Members
  WHERE Rolesuid = Membersgroupuid
  AND Rolesissqlrole =
  AND Usersuid = mberuid
  ORDER BY
  
  要列出屬於指定角色的成員的用戶就要把代碼更改為下面這樣
  
  DECLARE @role varchar()
  SET @role = Managers
  SELECT MemberName = Usersname RoleName = RolesName
  FROM sysusers Users sysusers Roles sysmembers Members
  WHERE Rolesname = @role
  AND Rolesuid = Membersgroupuid
  AND Rolesissqlrole =
  AND Usersuid = mberuid
  ORDER BY
  
  你可能更習慣把這段代碼轉化成用戶定義函數(userdefined functionUDF)它會返回一個布爾函數用來指示當前用戶是否是所關心的角色的成員把變量@role變成一個參數並傳遞它而不是定義它就像我在上面做的一樣利用它你可以編寫出自己的應用程序代碼在任何你需要確定給定用戶角色的時候調用這個函數
From:http://tw.wingwit.com/Article/program/Oracle/201311/18525.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.