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
查看全文
相关阅读:
安卓模拟器BlueStacks 安装使用教程(图解)
照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
移动语音引擎相关开发笔记
Linux下查看硬件信息的方法
linux下彻底卸载mysql 图解教程
linux下yum安装及配置
mybatis中的resultMap
项目管理模式之如何去除SVN标记
myeclipse中的classpath
Spring的AOP配置
原文地址:https://www.cnblogs.com/ruanbl/p/492400.html
最新文章
关闭数据库
开启InnoDB每表一个独立的表空间
date +%s 能打印出自1970-01-01 00:00:00到当前时间的秒数
在定义字段的时候设字符集 的优先机别更高
数椐库乱码问题
innobackupex err2
innobackupex err
MongoDB 插入数据指定类型
C#超级方便的ExpandoObject类别
Android图片加载框架之Picasso
热门文章
Android图片加载框架Picasso最全使用教程5
Kotlin开发Android笔记
Android图片加载框架Picasso最全使用教程4
新浪微博客户端项目之项目主体结构详解
Android短信彩信收发流程(应用层)
android短信的接收和发送处理
android短信发送器源代码
Android Mms 接收信息流程
Android监听SD卡文件变化
Android游戏开发之主角的移动与地图的平滑滚动
Copyright © 2011-2022 走看看