sql,scope_identity,procedure,tran,substring,cast,convert,charindex,插入角色的同时插入角色拥有的权限,权限使用权限列表表示,列表用逗号...

本文介绍了一种使用SQL存储过程实现角色及其权限管理的方法。该方法包括新增角色并分配权限、更新角色信息及权限的功能。通过创建存储过程AddRole和UpdateRoleAuth,实现了角色与权限的动态关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


ExpandedBlockStart.gifContractedBlock.gif/**//*
InBlock.gif插入角色的同时插入角色拥有的权限,权限使用权限列表表示,列表用逗号分隔权限的id
ExpandedBlockEnd.gif
*/

None.gif
create procedure AddRole
None.gif
@RoleName varchar(50),
None.gif
@Remark  varchar(200),
None.gif
@AuthorizeList varchar(8000),
None.gif
@lastID int output
None.gif
as
None.gif
begin tran
None.gif  
insert into dbo.RoleInfo(RoleName,Remark) values(@RoleName,@Remark)
None.gif  
select @lastID=scope_identity()
None.gif  
declare @i int
None.gif  
set   @AuthorizeList=@AuthorizeList+','  
None.gif  
set   @i=charindex(',',@AuthorizeList)  
None.gif  
while   @i>0  
None.gif  
begin 
None.gif    
insert into RoleAuthorizeInfo values(cast(@lastID as int),convert(int,left(@AuthorizeList,@i-1)))
None.gif    
set   @AuthorizeList=substring(@AuthorizeList,@i+1,8000)  
None.gif    
set   @i=charindex(',',@AuthorizeList)       
None.gif  
end
None.gif  
if @@error<>0
None.gif    
begin
None.gif      
rollback tran
None.gif    
end
None.gif  
else
None.gif    
begin
None.gif      
commit tran
None.gif    
end
None.gif
go
None.gif
None.gif
None.gif
declare @id int
None.gif
exec AddRole 'sdfsdf','sfsdfsf','111,222',@id output
None.gif
select @id
None.gif
go
/*
更新角色信息,同时更新权限信息
*/
None.gifcreate procedure UpdateRoleAuth
None.gif
@RoleID int,
None.gif
@RoleName varchar(50),
None.gif
@Remark varchar(200),
None.gif
@AuthList varchar(8000)
None.gif
as
None.gif
begin tran
None.gif  
update RoleInfo set RoleName=@RoleID,Remark=@Remark where RoleInfoAutoID=@RoleID
None.gif
delete from RoleAuthorizeInfo where RoleInfoAutoID=@RoleID
None.gif   
declare @i int
None.gif  
set   @AuthList=@AuthList+','  
None.gif  
set   @i=charindex(',',@AuthList)  
None.gif  
while   @i>0  
None.gif  
begin
None.gif    
None.gif    
insert into RoleAuthorizeInfo values(@RoleID,convert(int,left(@AuthList,@i-1)))
None.gif    
set   @AuthList=substring(@AuthList,@i+1,8000)  
None.gif    
set   @i=charindex(',',@AuthList)       
None.gif  
end
None.gif  
if @@error<>0
None.gif    
begin
None.gif      
rollback tran
None.gif    
end
None.gif  
else
None.gif    
begin
None.gif      
commit tran
None.gif    
end
None.gif
go

转载于:https://www.cnblogs.com/virusswb/archive/2008/07/01/1233098.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值