SQL SERVER数据库一次删除多条记录的方法

可以使用存储过程进行批量删除,传递参数为需要删除的记录id列表,使用固定格式,可以使用固定的连接符

如:id1:id2:id3

下面请看例子:

为了使用一个存储过程,更新表t_table中的cameraurl的值,

存储过程中使用参数@serials, 格式为id1:serial1,id2:serial2,id3:serial3

                DECLARE @PointerPrev int =1
		DECLARE @PointerCurr int 
		DECLARE @Index int --冒号:的位置
		DECLARE @TVar varchar(16)  --摄像头ID和序列号 格式:ID:Serial
		DECLARE @EId  int ---摄像头ID
		DECLARE @TSerial varchar(16)  --摄像头序列号
     
		while (@PointerPrev < LEN(@serials)) 
		Begin 
			Set @PointerCurr=CharIndex(',',@serials,@PointerPrev) 
			if(@PointerCurr>0) 
			Begin 
				set @TVar=SUBSTRING(@serials,@PointerPrev,@PointerCurr-@PointerPrev) 
				Set @index = CharIndex(':', @TVar)
				Set @EId = SUBSTRING(@TVar,1, @index-1)
				Set @TSerial = SUBSTRING(@TSerial, @Index, LEN(@TVar)-@Index)
				update t_table set cameraurl = @TSerial where id=@EId 

				SET @PointerPrev = @PointerCurr+1 
			End 
			else 
				Break 
		End 

		--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除 
		set @TVar=SUBSTRING(@serials,@PointerPrev,LEN(@serials)-@PointerPrev+1) 
		Set @index = CharIndex(':', @TVar)
		Set @EId = SUBSTRING(@TVar,1, @index-1)
		Set @TSerial = SUBSTRING(@TSerial, @Index+1, LEN(@TVar)-@Index)
		
             update t_table set cameraurl = @TSerial where id=@EId 

同理,如果是一次删除多条记录也是同样的方法。


猜你喜欢

转载自blog.csdn.net/weixin_39106371/article/details/80921527