if exists(select * from sysObjects where name='Users_delete')
drop proc Users_delete
go
create proc Users_delete
@ID varchar(100)
as
declare @pointPrve int--开始的位置
declare @pointCurr int--当前,的位置
declare @uID int --根据删除的id
set @pointPrve=1
while(@pointPrve<len(@ID))
begin
set @pointCurr=charIndex(',',@ID,@pointPrve)--从开始位置开始查找,在字符串@ID中的位置
if(@pointCurr>0)
begin
set @uID=cast(SUBSTRING(@ID,@pointPrve,@pointCurr-@pointPrve)as int)--从@pointPrve位置开始在@ID中截取长度为@pointCurr-@pointPrve的字符,然后转成int
delete from Users where id=@uID
set @pointPrve=@pointCurr+1--开始的位置等于,的位置加上1,也就是从下一个数字开始
end
else
break
end
--因为到最后一个数的时候没有逗号,所以@pointCurr的值小于零
set @uID=cast(SUBSTRING(@ID,@pointPrve,len(@ID)-@pointPrve+1) as int)
delete from Users where id=@uID
--测试存储过程
declare @id varchar(100)
set @id='21,22,23,24,25'
exec Users_delete @id
select * from Users