使用存储过程实现批量删除

存储过程(sqlserver)
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[DELETE_VEHICLE_DATA]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) DROP PROCEDURE [dbo].[DELETE_VEHICLE_DATA] GO --存在则删除 go CREATE PROCEDURE DELETE_VEHICLE_DATA( @vehicleId varchar(max) --参数 格式 "1,2,3,5,6" ) AS Declare @temp Table (a varchar(100)) --创建临时表 Declare @Ret as int BEGIN --把参数@vehicleId分割成int数组并插入临时表@temp Declare @i Int Set @vehicleId = RTrim(LTrim(@vehicleId)) Set @i = CharIndex(',',@vehicleId) While @i >= 1 Begin Insert @temp Values(Left(@vehicleId,@i-1)) Set @vehicleId = SubString(@vehicleId,@i+1,Len(@vehicleId)-@i) Set @i = CharIndex(',',@vehicleId) End If @vehicleId <> '' Insert @temp Values (@vehicleId) --插入临时表 delete [车辆数据] where 编号 in (select * from @temp) --执行为删除操作 通过id与临时表中的int数组对照 IF @@ROWCOUNT>0 Set @Ret=1 ELSE Set @Ret=0 END Return @Ret

  后台代码使用 StringBuilder 拼接的,记得截取字符串最后一个逗号

  StringBuilder ids = new StringBuilder();

  for (int i = 0; i <data.Count; i++)

   {

    ids.Append(item.nID).Append(",");

  }

  调用删除方法:DeleteData(ids.ToString().Substring(0, ids.Length - 1))

 

   

posted @ 2020-08-12 11:20  小七&  阅读(502)  评论(0编辑  收藏  举报