可以使用存储过程进行批量删除,传递参数为需要删除的记录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
同理,如果是一次删除多条记录也是同样的方法。