通過SQL Server存儲過程傳送數組參數刪除多條記錄
作者:佚名
SQL Server數據庫中有多種刪除的方法,下面為您介紹了一個通過SQL Server存儲過程傳送數組參數刪除多條記錄的方法,供您參考學習。
下面為您介紹的SQL Server刪除方法和一般的SQL Server刪除方法有所不同,該方法實現的是在SQL Server存儲過程通過傳送數組字符串參數SQL Server刪除多條記錄(如多選或全選表單中的多選框所獲取的一組數值刪除 )。
- CREATE PROCEDURE DeleteNews
- @ID nvarchar(500)
- as
- DECLARE @PointerPrev int
- DECLARE @PointerCurr int
- DECLARE @TId int
- Set @PointerPrev=1
- while (@PointerPrev < LEN(@ID))
- Begin
- Set @PointerCurr=CharIndex(',',@ID,@PointerPrev)
- if(@PointerCurr>0)
- Begin
- set @TId=cast(SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev) as int)
- Delete from News where ID=@TID
- SET @PointerPrev = @PointerCurr+1
- End
- else
- Break
- End
- --刪除最后一個,因為最后一個后面沒有逗號,所以在循環中跳出,需另外再刪除
- set @TId=cast(SUBSTRING(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1) as int)
- Delete from News where ID=@TID
- GO
- set ANSI_NULLS ON
- set QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE AddInter
- @userID nvarchar(max),
- @ProjecID int
- as
- begin
- DECLARE @PointerPrev int
- DECLARE @PointerCurr int
- DECLARE @TId int
- Set @PointerPrev=1
- begin transaction
- while (@PointerPrev < LEN(@userID))
- Begin
- Set @PointerCurr=CharIndex(',',@userID,@PointerPrev)
- if(@PointerCurr>0)
- Begin
- set @TId=cast(SUBSTRING(@userID,@PointerPrev,@PointerCurr-@PointerPrev) as int)
- exec AddIntention @TID,@ProjecID,0,2
- SET @PointerPrev = @PointerCurr+1
- End
- else
- Break
- End
- --刪除最后一個,因為最后一個后面沒有逗號,所以在循環中跳出,需另外再刪除
- set @TId=cast(SUBSTRING(@userID,@PointerPrev,LEN(@userID)-@PointerPrev+1) as int)
- exec AddIntention @TID,@ProjecID,0,2
- IF (@@error <> 0)
- begin
- ROLLBACK TRANSACTION
- end
- COMMIT TRANSACTION
- Return
- end
- GO
【編輯推薦】
責任編輯:段燃
來源:
互聯網