zoukankan      html  css  js  c++  java
  • aspnet_UsersInRoles_RemoveUsersFromRoles

    ALTER  PROCEDURE dbo.aspnet_UsersInRoles_RemoveUsersFromRoles
        
    @ApplicationName  NVARCHAR(256),
        
    @UserNames        NVARCHAR(4000),
        
    @RoleNames        NVARCHAR(4000)
    AS
    BEGIN
        
    DECLARE @ApplicationId UNIQUEIDENTIFIER
        
    SELECT  @ApplicationId = NULL
        
    SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName= LoweredApplicationName
        
    IF (@ApplicationId IS NULL)
            
    RETURN(2)
           
    /*返回@ApplicationId,不存在则返回2*/

        
    DECLARE @TranStarted   BIT
        
    DECLARE @ErrorCode INT
        
    SET @ErrorCode   = 0
        
    SET @TranStarted = 0

        
    IF@@TRANCOUNT = 0 ) --如果当前活动事务为0,开始事务并设置事务参数为1
        BEGIN
            
    BEGIN TRANSACTION
            
    SET @TranStarted = 1
        
    END
        
    ELSE
            
    SET @TranStarted = 0


        
    DECLARE @RoleId UNIQUEIDENTIFIER
        
    DECLARE @UserId UNIQUEIDENTIFIER
        
    DECLARE @UserName     NVARCHAR(256)
        
    DECLARE @RoleName     NVARCHAR(256)

        
    DECLARE @CurrentPosU  INT
        
    DECLARE @NextPosU     INT
        
    DECLARE @CurrentPosR  INT
        
    DECLARE @NextPosR     INT

        
    SELECT  @CurrentPosU = 1
    -----------------------------------------------------------------------------------
    --
    -------------又是那个-------------------------------------
        WHILE(@CurrentPosU <= LEN(@UserNames))
        
    BEGIN
            
    SELECT @NextPosU = CHARINDEX(N','@UserNames,  @CurrentPosU)
            
    IF (@NextPosU = 0  OR @NextPosU IS NULL)
                
    SELECT @NextPosU = LEN(@UserNames)+1
            
    SELECT @UserName = SUBSTRING(@UserNames@CurrentPosU@NextPosU - @CurrentPosU)
            
    SELECT @CurrentPosU = @NextPosU+1

            
    SELECT @CurrentPosR = 1
            
    WHILE(@CurrentPosR <= LEN(@RoleNames))
            
    BEGIN
                
    SELECT @NextPosR = CHARINDEX(N','@RoleNames,  @CurrentPosR)
                
    IF (@NextPosR = 0 OR @NextPosR IS NULL)
                    
    SELECT @NextPosR = LEN(@RoleNames)+1
                
    SELECT @RoleName = SUBSTRING(@RoleNames@CurrentPosR@NextPosR - @CurrentPosR)
                
    SELECT @CurrentPosR = @NextPosR+1
    ------------------------------------对用户名和角色名的操作----------------
     
                
    SELECT @RoleId = NULL
                
    SELECT @RoleId = RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleNameAND ApplicationId = @ApplicationId
                 
    /*查询角色ID*/
                
    IF (@RoleId IS NULL--如果不存在则跳转回滚
                BEGIN
                    
    SELECT N''@RoleName
                    
    SET @ErrorCode = 2
                    
    GOTO Cleanup
                
    END

                
    SELECT @UserId = NULL
                
    SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LoweredUserName = LOWER(@UserNameAND ApplicationId = @ApplicationId
                 
    /*查询用户ID*/
                
    IF (@UserId IS NULL)  ---如果不存在则跳转回滚
                BEGIN
                    
    SELECT @UserName, N''
                    
    SET @ErrorCode = 1
                    
    GOTO Cleanup
                
    END

                
    IF (NOT(EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId AND @RoleId = RoleId)))
                    
    /*如果此用户不存在于此角色中,跳转回滚*/
                
    BEGIN
                    
    SELECT @UserName@RoleName
                    
    SET @ErrorCode = 3
                    
    GOTO Cleanup
                
    END
                
    DELETE FROM dbo.aspnet_UsersInRoles WHERE (UserId = @UserId AND RoleId = @RoleId)
                  
    /*如果存在于此角色中,则删除此记录*/
            
    END
        
    END

        
    IF@TranStarted = 1 )
        
    BEGIN
            
    SET @TranStarted = 0
            
    COMMIT TRANSACTION  --结束事务
        END

        
    RETURN(0)

    Cleanup:

        
    IF@TranStarted = 1 )
        
    BEGIN
            
    SET @TranStarted = 0
            
    ROLLBACK TRANSACTION
        
    END

        
    RETURN @ErrorCode
    END
  • 相关阅读:
    [PHP] 小数转科学计数法, 小数保留 n 位
    [Blockchain] Cosmos Starport 101
    [Blockchain] Cosmos Starport 地址前缀的变更方式
    [Blockchain] Cosmos Starport 安装的三种方式
    [ML] 机器学习的 7 步走
    [FAQ] MEMORY ALLOC FAILED: mmap with HUGETLB failed, attempting without it (you should fix your kernel)
    [FAQ] FastAdmin epay 微信公众号支付 JSAPI 支付必须传 openid ?
    [TP5] 动态绑定指定默认模块, 解决: 控制器不存在:appindexcontrollerApi
    [TP5] ThinkPHP 默认模块和单模块的设置方式
    [TP5] 浅谈 ThinkPHP 的 Hook 行为事件及监听执行
  • 原文地址:https://www.cnblogs.com/ruanbl/p/494127.html
Copyright © 2011-2022 走看看