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写成参数操作

posted @ 2016-08-03 10:32  小菜鸟大神  阅读(4748)  评论(0编辑  收藏  举报