sql-server - 通过存储过程根据给定的记录 ID 删除更多记录
问题描述
我的应用程序使用 SQL Server 2014。它有一个名为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条记录?
解决方案
对于您的特定场景,您可以尝试 VARCHAR(MAX)。它最多可容纳 2GB 的数据。但我个人尽量避免使用动态 SQL,尤其是在像您这样的简单场景中。注释中的@DaleBurrell 建议或字符串拆分函数来解析输入并将结果连接到表中。
推荐阅读
- javascript - 如何使一个小框出现在图像的某些部分上?
- node.js - 如何通过 CORS 请求使用快速会话
- javascript - 允许用户在文本框中只添加空格和不超过 11 个电话号码
- python - 使用不带日期的 csv.writer 从 savReader 写入字节到浮点转换
- javascript - 角度弹出在html脚本中不起作用
- html - CSS 过滤器在 Firefox 或 IE 中不起作用
- devops - 通过 ECS 部署 Slackbot
- rally - fetchWsapiRecords 错误:通信失败”
- javascript - unsafe:data:image/*;base64,:1 GET unsafe:data:image/*;base64, (Javascript/Angular)
- html - HTML CSS 增加背景图像的大小,使其与文本一起增长