zoukankan
html css js c++ java
aspnet_UsersInRoles_AddUsersToRoles
ALTER
PROCEDURE
dbo.aspnet_UsersInRoles_AddUsersToRoles
--
添加用户到角色
@ApplicationName
NVARCHAR
(
256
),
@UserNames
NVARCHAR
(
4000
),
@RoleNames
NVARCHAR
(
4000
),
@TimeZoneAdjustment
INT
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
(
@RoleName
)
AND
ApplicationId
=
@ApplicationId
--
--判断角色是否存在
IF
(
@RoleId
IS
NULL
)
BEGIN
SELECT
@RoleName
--
不存在则回滚.
SET
@ErrorCode
=
2
GOTO
Cleanup
END
SELECT
@UserId
=
NULL
SELECT
@UserId
=
UserId
FROM
dbo.aspnet_Users
WHERE
LoweredUserName
=
LOWER
(
@UserName
)
AND
ApplicationId
=
@ApplicationId
--
-判断用户是否存在
IF
(
@UserId
IS
NULL
)
BEGIN
--
-不存在则获取当前时间并添加此用户
DECLARE
@DateTimeNowUTC
DATETIME
EXEC
dbo.aspnet_GetUtcDate
@TimeZoneAdjustment
,
@DateTimeNowUTC
OUTPUT
EXEC
dbo.aspnet_Users_CreateUser
@ApplicationId
,
@UserName
,
0
,
@DateTimeNowUTC
,
@UserId
OUTPUT
END
IF
(
EXISTS
(
SELECT
*
FROM
dbo.aspnet_UsersInRoles
WHERE
@UserId
=
UserId
AND
@RoleId
=
RoleId))
BEGIN
--
如果此用户在此角色中已存在,则回滚
SELECT
@UserName
,
@RoleName
SET
@ErrorCode
=
3
GOTO
Cleanup
END
INSERT
INTO
dbo.aspnet_UsersInRoles (UserId, RoleId)
VALUES
(
@UserId
,
@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
查看全文
相关阅读:
.NET Core使用SignalR做登录、推送
记录node-sass安装失败的解决方法
.NET Core微服务二:Ocelot API网关
.NET Core微服务一:Consul服务中心
ASP.NET Core下Ocelot的简单使用
ASP.Net Core 发布到IIS Http Error 502.5 官方解决办法
Windows版Redis主从配置
IIS 32位/64位 全局模式切换
NOIP 2007 普及组 初赛 试卷+答案
P1066 2^k进制数 NOIP 2006 提高组 第四题
原文地址:https://www.cnblogs.com/ruanbl/p/492400.html
最新文章
『ACM C++』 PTA 天梯赛练习集L1 | 044-45
『ACM C++』 PTA 天梯赛练习集L1 | 042-43
『ACM C++』 PTA 天梯赛练习集L1 | 040-41
『ACM C++』 PTA 天梯赛练习集L1 | 038-039
『ACM C++』 PTA 天梯赛练习集L1 | 036-037
『ACM C++』 PTA 天梯赛练习集L1 | 034-035
『ACM C++』 PTA 天梯赛练习集L1 | 029-033
『ACM C++』 PTA 天梯赛练习集L1 | 027-028
使用webuploader上传图片
微信APP开发 微信APP支付签名错误,和APP返回-1 的原因
热门文章
NetCore 简单操作 ElasticSearch
.NET Core CAP失败事件的处理
Postman用法
NetCore上轻松使用Quartz
关于DDD如何落地的随笔
基于ABP VNext及CodeFirst,迈开走向DDD的第一步
SqlSerch 查找不到数据
生成带二维码的图片
网页获取地址及经纬度
Windows下搭建vue开发环境
Copyright © 2011-2022 走看看