临时表常用存储

  

-- =============================================
-- 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    
  

 

posted @ 2017-07-13 10:32  安之&若素  阅读(145)  评论(0)    收藏  举报