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
查看全文
相关阅读:
awk 连接字符串
VCF (Variant Call Format)格式详解
Extracting info from VCF files
JAVA中AES对称加密和解密
关于Java中常用加密/解密方法的实现
Java的MD5加密和解密
java实现MD5加密
Java中String和byte[]间的转换浅析
Java中字符串和byte数组之间的相互转换
字符串与byte[]之间的转换
原文地址:https://www.cnblogs.com/ruanbl/p/492400.html
最新文章
android 通过uri获取bitmap图片并压缩
Android SDK4/5/6/7,相册、拍照及裁剪功能及遇见的坑
【转】Android7.0适配心得
Vim 程序编辑器 经常使用操作
[异步][事务][流程][设计]同步当场处理并返回处理结果,异步后怎样返回. 怎样解决?
PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
Linux下Postfix的配置和使用
怎么进行robot检測
使用 maven:archetype 创建JSF2 + EJB3.1 + JPA2项目骨架并在JBoss WildFly 8.1上部署
二叉树的二叉链表存储
热门文章
应付压力有什么秘诀
zoj 3657 策略题 easy
hdoj 3157 Crazy Circuits 【有下界最小流】
Filter FASTA files
install tabix/bgzip
mkfs.ext4 磁盘分区
ls存在的文件,不能操作
TNS-12541: TNS:no listener , TNS-12542: TNS:address already in use
HP P420i Smart Array
MySQL 数据(数据库)迁移
Copyright © 2011-2022 走看看