sql server存储过程实现批量删除
在项目中用到了存储过程来进行批量删除的操作,给大家分享一下
原理就是把id组成的字符串在数据库分割成数组放一张临时表,删除的时候与id进行对照
--删除会员信息 if OBJECT_ID('pro_DelUserInfo','p')is not null --判断存储过程是否存在 drop proc pro_DelUserInfo --存在则删除 go create proc pro_DelUserInfo( --创建存储过程 @strid varchar(max) --参数 格式 "1,2,3,5,6" ) as declare @temp Table (a varchar(100)) --创建临时表 begin --把参数@strid分割成int数组并插入临时表@temp Declare @i Int Set @strid = RTrim(LTrim(@strid)) Set @i = CharIndex(',',@strid) While @i >= 1 Begin Insert @temp Values(Left(@strid,@i-1)) Set @strid = SubString(@strid,@i+1,Len(@strid)-@i) Set @i = CharIndex(',',@strid) End If @strid <> '' Insert @temp Values (@strid) --插入临时表 delete tbl_User where id in (select * from @temp) --执行为删除操作 通过id与临时表中的int数组对照 end
当然如果有多个表使用的话,也可以吧表名和唯一标示id写成参数操作