服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - sql 存储过程批量删除数据的语句

sql 存储过程批量删除数据的语句

2019-12-21 15:31MSSQL教程网 Sql Server

sql 存储过程批量删除数据的语句,需要的朋友可以参考下

代码如下:


Create PROCEDURE Batch_Delete 
@TableName nvarchar(100), --表名 
@FieldName nvarchar(100), --删除字段名 
@DelCharIndexID nvarchar(1000) 
as 
DECLARE @PointerPrev int 
DECLARE @PointerCurr int 
DECLARE @TId NVARCHAR(50), @sql NVARCHAR(1000) 

Set @PointerPrev = 1 
while (@PointerPrev < LEN(@DelCharIndexID)) 
Begin 
Set @PointerCurr = CharIndex(',',@DelCharIndexID,@PointerPrev) 
if(@PointerCurr>0) 
Begin 
SET @TId = cast(SUBSTRING(@DelCharIndexID, @PointerPrev, @PointerCurr - @PointerPrev) As NVARCHAR(50)) 
SET @sql = 'Delete From '+ @TableName +' Where '+ @FieldName + ' = '''+ @TID+'''' 
Exec(@Sql) 
Print('======='+@TId+'=======sql'+@Sql) 
SET @PointerPrev = @PointerCurr + 1 
Print(@PointerPrev) 
End 
else 
Begin 
Print('break') 
Break 
End 
End 
--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除 
SET @TId = cast(SUBSTRING(@DelCharIndexID, @PointerPrev, LEN(@DelCharIndexID) - @PointerPrev + 1) As NVARCHAR(50)) 
SET @sql = 'Delete From '+ @TableName +' Where '+ @FieldName + ' = '''+ @TID+'''' 
Exec(@Sql) 
Print('======='+@TId+'=======sql'+@Sql) 
GO 

延伸 · 阅读

精彩推荐