-- =============================================
-- Author:
-- Create date: 2017-06-13
-- Description: 新增角色资源关系表
-- =============================================
CREATE PROCEDURE [dbo].[Insert_RoleResourceRelation]
@CheckedIDS varchar(4000),
@UserCode varchar(200),
@RoleID UNIQUEIDENTIFIER,
@Type varchar(20),
@MSG NVARCHAR(100)=N'' OUTPUT --返回信息
AS
BEGIN
--日志记录参数------------
DECLARE @_desc VARCHAR(400)
DECLARE @_title VARCHAR(400)
BEGIN TRY --开始捕捉异常
BEGIN TRANSACTION -- 开始事务
DECLARE @split varchar(10)
DECLARE @x XML
set @split=','
SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@CheckedIDS, @split, '"/><item id="') + '"/></items>')
--定义临时表
DECLARE @TEMP TABLE
(
ResourceID uniqueidentifier,
UserName NVARCHAR(256)
)
--XML数据插入临时表
INSERT INTO @TEMP
SELECT
x.item.value('@ResourceID[1]', 'uniqueidentifier'),
x.item.value('UserName[1]', 'NVARCHAR(256)')
FROM @x.nodes('//items/item') AS x(item)
set @CheckedIDS = replace(@CheckedIDS,',',''',''');
set @CheckedIDS =''''+ @CheckedIDS+''''
print @CheckedIDS
--如果不存在就新增
INSERT INTO Role_Resource_Relation(Id,Rid,ResourceId,CreateTime,Creator,DeleteFlag)
SELECT newid(),@RoleID,A.ResourceID,getdate(),A.UserName,0 FROM @TEMP A
WHERE A.ResourceID not in(SELECT ResourceId FROM Role_Resource_Relation WHERE Rid=@RoleID)
IF @Type='Edit'
BEGIN
SET @MSG='更新成功'
END
ELSE
SET @MSG='新增成功'
COMMIT TRAN --提交事务
END TRY ----结束捕捉异常
BEGIN CATCH --有异常被捕获
IF @@TRANCOUNT > 0 --判断有没有事务
BEGIN
ROLLBACK TRAN --回滚事务
END
--赋值日志记录参数------------
SET @_title='新增资源角色信息'
SET @_desc='新增资源角色信息调用存储存在异常!'
EXEC Common_ErrorLog_Insert
@Title ='',
@Type = 100,
@Description =@_desc,
@Operator = @UserCode
END CATCH ---结束异常处理
END
GO