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 

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


  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

weixin_39106371

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值