-
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)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*返回@ApplicationId,不存在则返回2*/
![](/Images/OutliningIndicators/None.gif)
DECLARE @TranStarted BIT
DECLARE @ErrorCode INT
SET @ErrorCode = 0
SET @TranStarted = 0
![](/Images/OutliningIndicators/None.gif)
IF( @@TRANCOUNT = 0 ) --如果当前活动事务为0,开始事务并设置事务参数为1
BEGIN
BEGIN TRANSACTION
SET @TranStarted = 1
END
ELSE
SET @TranStarted = 0
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
DECLARE @RoleId UNIQUEIDENTIFIER
DECLARE @UserId UNIQUEIDENTIFIER
DECLARE @UserName NVARCHAR(256)
DECLARE @RoleName NVARCHAR(256)
![](/Images/OutliningIndicators/None.gif)
DECLARE @CurrentPosU INT
DECLARE @NextPosU INT
DECLARE @CurrentPosR INT
DECLARE @NextPosR INT
![](/Images/OutliningIndicators/None.gif)
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
![](/Images/OutliningIndicators/None.gif)
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(@RoleName) AND ApplicationId = @ApplicationId
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*查询角色ID*/
IF (@RoleId IS NULL) --如果不存在则跳转回滚
BEGIN
SELECT N'', @RoleName
SET @ErrorCode = 2
GOTO Cleanup
END
![](/Images/OutliningIndicators/None.gif)
SELECT @UserId = NULL
SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId = @ApplicationId
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*查询用户ID*/
IF (@UserId IS NULL) ---如果不存在则跳转回滚
BEGIN
SELECT @UserName, N''
SET @ErrorCode = 1
GOTO Cleanup
END
![](/Images/OutliningIndicators/None.gif)
IF (NOT(EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE @UserId = UserId AND @RoleId = RoleId)))
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*如果此用户不存在于此角色中,跳转回滚*/
BEGIN
SELECT @UserName, @RoleName
SET @ErrorCode = 3
GOTO Cleanup
END
DELETE FROM dbo.aspnet_UsersInRoles WHERE (UserId = @UserId AND RoleId = @RoleId)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*如果存在于此角色中,则删除此记录*/
END
END
![](/Images/OutliningIndicators/None.gif)
IF( @TranStarted = 1 )
BEGIN
SET @TranStarted = 0
COMMIT TRANSACTION --结束事务
END
![](/Images/OutliningIndicators/None.gif)
RETURN(0)
![](/Images/OutliningIndicators/None.gif)
Cleanup:
![](/Images/OutliningIndicators/None.gif)
IF( @TranStarted = 1 )
BEGIN
SET @TranStarted = 0
ROLLBACK TRANSACTION
END
![](/Images/OutliningIndicators/None.gif)
RETURN @ErrorCode
END
-
相关阅读:
4_url_for的使用
3_Flask中URL与视图函数的映射
2_Fiask的配置文件config
C10K问题渣翻译
(转载)Linux 套接字编程中的 5 个隐患
linux2.6.24内核源代码分析(2)——扒一扒网络数据包在链路层的流向路径之一
linux2.6.24内核源代码分析(1)——扒一扒sk_buff
andriod手机签到应用服务器设计
(转)ubuntu安装opengl
线段树
-
原文地址:https://www.cnblogs.com/ruanbl/p/494127.html
-
最新文章
-
提供个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录 文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删 除该目录
提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录。
给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息。
显示HDFS中指定的文件读写权限、大小、创建时间、路径等信息。
将HDFS中指定文件的内容输出到终端。
Var_init class
从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名。
向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件
Zerotier在windows下实现内网远程桌面
day3
Copyright © 2020-2023
润新知