看了杨中科老师的<<SQL从入门到提高视频教程>>后,有感而发,自己深刻的理解了存储过程,sql变量等用法。在这特意编写了一个通用的批量删除存储过程。
希望大家提出建议和批评。
GO
-- =============================================
-- Author: 小白
-- Create date: 2011-11-03
-- Description: 传入多个ID值实现批量删除
-- =============================================
Create PROCEDURE [dbo].[pro_DeleteBath]
@str nvarchar(200) --ID字符串(传入形式:1,2,3,5,6,9)
as
begin
declare @pointPrve int--开始的位置
declare @pointCurr int--当前,的位置
declare @uID int --根据删除的id
set @pointPrve=1
while(@pointPrve<len(@str))
begin
set @pointCurr=charIndex(',',@str,@pointPrve)--从开始位置开始查找,在字符串@ID中的位置
if(@pointCurr>0)
begin
set @uID=cast(SUBSTRING(@str,@pointPrve,@pointCurr-@pointPrve)as int)--从@pointPrve位置开始在@ID中截取长度为@pointCurr-@pointPrve的字符,然后转成int
delete from xb_news where nid=@uID
set @pointPrve=@pointCurr+1--开始的位置等于,的位置加上1,也就是从下一个数字开始
end
else
break
end
--因为到最后一个数的时候没有逗号,所以@pointCurr的值小于零
set @uID=cast(SUBSTRING(@str,@pointPrve,len(@str)-@pointPrve+1) as int)
delete from xb_news where nid=@uID
END