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
查看全文
相关阅读:
我的2020书单
记录一次克隆硬盘的经历
npm简单介绍
批量处理Excel从格式xls到xlsx
SQL经典实例笔记
在字符串中找出连续最长的数字串
将数字转化成字符串
寄存器位读写,结构体位域定义,位域操作,位操作
android C/C++ source files 全局宏定义 .
android2.3 -添加自定义按键:作唤醒功能 .
原文地址:https://www.cnblogs.com/ruanbl/p/492400.html
最新文章
iOS
iOS
iOS
iOS
iOS
Mac
iOS
Xcode
iOS
iOS
热门文章
EntityFramework嵌套查询的五种方法
Mysql EF 触发器生成主键id 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项 ;System.Data.Entity.Infrastructure.DbUpdateConcurrencyException
Entity Framework 5中遇到的 mysql tinyint(1) 转换为 bool 的问题 (我用的是VS2013中的EF5版本)
msyql同步的时候报错 : 错误代码: 1293 Incorrect table definition;there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
MySQL server has gone away 问题的解决方法
占位 Bootstrap
jQuery图片播放插件prettyPhoto使用介绍
Jquery 上传插件 FineUploader 在 webform 和 mvc 中的使用;
跨浏览器的placeholder-jQuery版(jQuery插件EnPlaceholder)
EF5+MVC4系列(12) 在主视图中直接用RenderAction调用子Action,并返回视图(Return View)或者分部视图(Return PartialView); 从主Action传值到子Action使用TempData传值;TempData高级用法
Copyright © 2011-2022 走看看