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

数据库 SQL Server
SQL Server数据库中有多种删除的方法,下面为您介绍了一个通过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游标

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-02 09:58:24

SQL删除

2010-07-07 17:00:15

SQL Server传

2010-11-10 13:03:15

SQL Server存

2010-11-12 09:18:13

SQL Server存

2009-08-06 16:44:06

2010-09-01 17:19:49

SQL删除TABLE

2010-07-15 12:38:14

SQL Server存

2010-09-02 09:37:36

SQL删除

2011-08-12 14:51:31

SQL ServerSET NOCOUNT

2011-03-24 13:38:47

SQL Server 存储分页

2010-09-14 10:16:57

sql server

2010-11-12 09:46:55

Sql Server存

2011-03-28 10:46:36

sql server存储分页

2010-09-14 10:36:23

sql server存

2010-11-12 10:46:16

SQL Server变

2010-09-01 16:35:12

SQL删除存储过程

2011-09-01 13:09:58

SQL Server DataTable作为

2010-06-28 09:21:04

SQL Server存

2010-07-06 14:06:52

SQL Server存

2010-07-05 10:06:51

SQL Server扩
点赞
收藏

51CTO技术栈公众号