通过SQL Server存储过程传送数组参数删除多条记录

昨天看了无心之柳.NET 的一篇给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-@PointerPrevas int)
            
Delete from News where ID=@TID
            
SET @PointerPrev = @PointerCurr+1
        
End
        
else
            
Break
    
End
    
--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
     set @TId=cast(SUBSTRING(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1as int
     
Delete from News where ID=@TID
GO


posted @ 2005-09-05 16:07  therockthe  阅读(1872)  评论(5编辑  收藏  举报