• 存储过程里循环读取Array




    CREATE PROCEDURE dbo.s_Manager_UpdateManagerInCatalogID
    (
     @catalogIDArray nvarchar(512),
     @managerID int,
     @Message nvarchar(64) out
    )
    AS

     DECLARE @PointerPrev int
         DECLARE @PointerCurr int
         DECLARE @TId int
         Set @PointerPrev=1
         set @PointerCurr=1

     begin transaction

     Set NoCount ON
     DELETE FROM Common_ManagerINCatalogs where ManagerID = @ManagerID--删除以前的记录
        
         Set @PointerCurr=CharIndex(',',@catalogIDArray,@PointerPrev+1)
         set @TId=cast(SUBSTRING(@catalogIDArray,@PointerPrev,@PointerCurr-@PointerPrev) as int)

         Insert into Common_ManagerINCatalogs (ManagerID,CatalogID) Values(@ManagerID,@TId)

         SET @PointerPrev = @PointerCurr
         while (@PointerPrev+1 < LEN(@catalogIDArray))
         Begin
             Set @PointerCurr=CharIndex(',',@catalogIDArray,@PointerPrev+1) --假设已“,”分隔
             if(@PointerCurr>0)
             Begin
                 set @TId=cast(SUBSTRING(@catalogIDArray,@PointerPrev+1,@PointerCurr-@PointerPrev-1) as int)
                  Insert into Common_ManagerINCatalogs (ManagerID,CatalogID) Values(@ManagerID,@TId)
                 SET @PointerPrev = @PointerCurr
             End
             else
                 Break
         End
        
         set @TId=cast(SUBSTRING(@catalogIDArray,@PointerPrev+1,LEN(@catalogIDArray)-@PointerPrev) as int)
        Insert into Common_ManagerINCatalogs (ManagerID,CatalogID) Values(@ManagerID,@TId)
         Set NoCount OFF
         if @@error=0
         begin
             commit transaction
         end
         else
         begin
       rollback transaction
         end

      SELECT @Message = '{Success}'

    GO

  • 相关阅读:
    2017年系统架构设计师论文范文
    在SQL Server 2008中执行透明数据加密(转自IT专家网)
    开发笔记
    [置顶] GO-Gin框架快速指南
    [置顶] JS-逆向爬虫
    [置顶] ES篇
    [置顶] GO
    [置顶] 爬虫入狱指南
    [置顶] websocket
    [置顶] Linux篇
  • 原文地址:https://www.cnblogs.com/smallmuda/p/302698.html
Copyright © 2020-2023  润新知