程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 做權限管理的時候,對某個用戶的權限進行檢索

做權限管理的時候,對某個用戶的權限進行檢索

編輯:關於SqlServer

--用戶繼承樹

CREATE function getUserTree(@UserName sysname, --用戶名
   @Seq bit   --查找方式:0查找子孫 1.查找祖先
   )
   returns @Result table(UserID sysname,UserName sysname,Level int)
   as
   begin
   declare @UserId sysname
   set @userId=user_id(@userName)
   if @userid is null
   begin
   --raiserror('指定的用戶名不存在',16,1)
   return
   end
   DECLARE @level int, @line char(20)
   declare @stack table(item sysname, level int)
   INSERT INTO @stack VALUES (@UserID, 1)
   SELECT @level = 1
   WHILE @level > 0
   BEGIN
   IF EXISTS (SELECT * FROM @stack WHERE level = @level)
   BEGIN
   SELECT @userId = item
   FROM @stack
   WHERE level = @level
   insert into @Result values(@UserId,User_name(@userID),@level)
   DELETE FROM @stack
   WHERE level = @level
   AND item = @userId
   if @Seq=1 --查找祖先
   INSERT @stack
   SELECT groupuid, @level + 1
   FROM sysmembers
   WHERE memberuid = @userId
   else --查找子孫
   INSERT @stack
   SELECT memberuid, @level + 1
   FROM sysmembers
   WHERE groupuid = @userId
   IF @@ROWCOUNT > 0
   SELECT @level = @level + 1
   END
   ELSE
   SELECT @level = @level - 1
   END -- WHILE
   return
   end

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved