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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM