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
查看全文
相关阅读:
《Code Complete》第一部分纪要
深入理解Java虚拟机-JVM内存管理的猜测
成长经验系列之三-猜想-技术未来
深入理解Java虚拟机-第三版-前言及第一章笔记
float与double的精度问题
成长经验系列之二-方法-成长分享
工作可能用的一些网站(不定时更新)
Walkthrough: Write your first client script
Make a Field Required in a Dynamics CRM Dialog / PowerApps
Refresh Power BI Dataset programmatically from Dynamics 365 CRM/PowerApps
原文地址:https://www.cnblogs.com/ruanbl/p/492400.html
最新文章
基于RT1170 使能GPIO输出功能 (二)
基于RT1170 使能GPIO输入功能 (一)
基于RT1170 开发板开机测评
基于RT1052 Aworks MIPI显示马赛克问题 (二十二)
基于RT1052 Aworks MIPI显示水波纹问题 (二十一)
基于RT1052 Aworks使能U盘功能(十九)
基于RT1052 Aworks调试LIN线功能(二十)
基于RT1052 Aworks MIPI 2line 显示 (十八)
基于RT1052 Aworks SDRAM压力测试(十七)
面试必问的HashMap考点(接上篇基本原理)
热门文章
Java中 a+=b和a=a+b有什么区别?
考研答题小程序
论答题活动小程序结果页设计
考研政治1000题小程序开发
考研刷题小程序
考研刷题小程序
答题小程序开发之路
党建党史知识竞答活动小程序
JVM栈帧-局部变量表中引用类型的理解
成长经验系列之四-方法-优质信息
Copyright © 2011-2022 走看看