SQL 存儲過程 傳入數組參數


今天在做統計數據的時候,傳入數組導致數據不顯示。解決方式和大家分享一下:

--參數@CompanyName='北京,天津,上海'

    DECLARE @PointerPrev int
    DECLARE @PointerCurr int
    DECLARE @TName nvarchar(100)
    Set @PointerPrev=1
    while (@PointerPrev < LEN(@CompanyName))
    Begin
        Set @PointerCurr=CharIndex(',',@CompanyName,@PointerPrev)
        if(@PointerCurr>0)
        Begin
            set @TName=SUBSTRING(@CompanyName,@PointerPrev,@PointerCurr-@PointerPrev)

          --我們可以在這里直接進行刪除或修改

           DELETE FROM TestA    WHERE Name=@TName

         --如果作為查詢條件,我需要創建一個臨時表,將數據插入進去
         --insert into #CnameTable (Name) VALUES (@TName)
         --insert into #CnameTable (Name)  SELECT Name FROM TestName where Name like '%'+@TName+'%'
         --這里的TestName 表中數劇量大時會降低查詢速度,建議大家用其他方式處理,例如指針、重新拼接字符串等

            SET @PointerPrev = @PointerCurr+1
        End
        else
            Break
    End
    --因為最后一個后面沒有逗號,所以在循環中跳出,需另外再刪除
     set @TName=SUBSTRING(@CompanyName,@PointerPrev,LEN(@CompanyName)-@PointerPrev+1)

     DELETE FROM TestA    WHERE Name=@TName

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM