通过SQL Server存储过程传送数组参数删除多条记录

下面为您介绍的SQL Server删除方法和一般的SQL Server删除方法有所不同,该方法实现的是在SQL Server存储过程通过传送数组字符串参数SQL Server删除多条记录(如多选或全选表单中的多选框所获取的一组数值删除 )。

 
 
 
  1. CREATE PROCEDURE DeleteNews   
  2.     @ID nvarchar(500)   
  3. as   
  4.     DECLARE @PointerPrev int   
  5.     DECLARE @PointerCurr int   
  6.     DECLARE @TId int   
  7.     Set @PointerPrev=1   
  8.        
  9.     while (@PointerPrev < LEN(@ID))   
  10.     Begin   
  11.         Set @PointerCurr=CharIndex(',',@ID,@PointerPrev)   
  12.         if(@PointerCurr>0)   
  13.         Begin   
  14.             set @TId=cast(SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev) as int)   
  15.             Delete from News where ID=@TID   
  16.             SET @PointerPrev = @PointerCurr+1   
  17.         End   
  18.         else   
  19.             Break   
  20.     End   
  21.     --删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除   
  22.      set @TId=cast(SUBSTRING(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1) as int)   
  23.      Delete from News where ID=@TID   
  24. GO   
  25.  
  26.  
  27. set ANSI_NULLS ON  
  28. set QUOTED_IDENTIFIER ON  
  29. GO  
  30.  
  31. CREATE PROCEDURE AddInter   
  32.     @userID nvarchar(max),  
  33. @ProjecID int  
  34. as   
  35. begin  
  36.     DECLARE @PointerPrev int   
  37.     DECLARE @PointerCurr int   
  38.     DECLARE @TId int   
  39.     Set @PointerPrev=1   
  40.     begin transaction   
  41.     while (@PointerPrev < LEN(@userID))   
  42.     Begin   
  43.         Set @PointerCurr=CharIndex(',',@userID,@PointerPrev)   
  44.         if(@PointerCurr>0)   
  45.         Begin   
  46.             set @TId=cast(SUBSTRING(@userID,@PointerPrev,@PointerCurr-@PointerPrev) as int)      
  47.             exec AddIntention @TID,@ProjecID,0,2    
  48.             SET @PointerPrev = @PointerCurr+1   
  49.         End   
  50.         else   
  51.             Break   
  52.     End   
  53.     --删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除   
  54.      set @TId=cast(SUBSTRING(@userID,@PointerPrev,LEN(@userID)-@PointerPrev+1) as int)   
  55. exec AddIntention @TID,@ProjecID,0,2  
  56. IF (@@error <> 0)  
  57.    begin     
  58.     ROLLBACK TRANSACTION   
  59.    end  
  60.  
  61. COMMIT TRANSACTION  
  62. Return   
  63. end        
  64. GO  

【编辑推荐】

六种SQL Server删除重复行的方法

SQL Server创建表语句介绍

SQL Server创建数据库的命令

sql server系统表损坏的解决方法

带您了解SQL Server游标

分享名称:通过SQL Server存储过程传送数组参数删除多条记录
网站路径:http://www.shufengxianlan.com/qtweb/news1/385251.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联