MSSQL学习之存储过程--批量删除

 


 看了杨中科老师的<<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


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值