一尘不染

将数组参数传递给存储过程

sql

我有一个流程可以抓取一堆记录(1000 条)并对它们进行操作,完成后,我需要将其中的大量记录标记为已处理。我可以用一大串 ID 来表明这一点。我试图避免“循环更新”模式,所以我想找到一种更有效的方法将这个 ID 包发送到 MS SQL Server 2008 存储过程中。

建议 #1 - 表值参数。我可以定义一个表类型,只包含一个 ID 字段,然后发送一个充满 ID 的表来更新。

建议 #2 - proc 正文中带有 OPENXML() 的 XML 参数 (varchar)。

建议 #3 - 列表解析。如果可能的话,我宁愿避免这种情况,因为它看起来笨重且容易出错。

这些中的任何偏好,或者我错过的任何想法?


阅读 60

收藏
2022-10-26

共1个答案

一尘不染

Erland Sommarskog 撰写的关于此问题的最佳文章:

他涵盖了所有选项并且解释得很好。

很抱歉答案很短,但是 Erland 关于数组的文章就像 Joe Celko 的关于树和其他 SQL 处理的书 :)

2022-10-26