通过存储过程根据给定的记录ID删除更多记录

时间:2019-05-23 21:36:36

标签: sql-server

我的应用程序使用SQL Server2014。它具有一个名为Report的表。我具有以下存储过程来删除记录。

create procedure delteReportsByIds
    @ids varchar(8000)
as 
begin
    exec ('delete from Report where id in ( '+ @ids +' )')
end

传递到ids的数据类似于

1,4,6

它将删除ID为1、4、6的3条记录。这就是问题所在。现在表非常大,一条记录的ID已达到7位,例如

1380025

因此,存储过程一次最多只能删除1000条记录(带有7位ID)。看来我无法提高8000的限制。如何通过上述步骤一次删除2000条记录?

1 个答案:

答案 0 :(得分:1)

对于您的特定情况,您可以尝试VARCHAR(MAX)。它最多可容纳2GB的数据。但是我个人尝试避免使用动态SQL,尤其是在像您这样的简单方案中。注释中的@DaleBurrell建议或String Split函数可以解析输入并将结果连接到表中。

相关问题