如何将数百万个值传递给SQL Server存储过程中的单个参数?

时间:2016-05-19 13:48:28

标签: c# sql-server stored-procedures

我目前正在开发一个项目,该项目从用户选择中收集ID列表(属于2个表),这需要根据用户选择的内容进一步过滤。为此,我需要将一组ID作为参数(逗号分隔值)发送到存储过程。但据我了解,SQL Server存储过程最多只能接受一个参数中的4000个字符,超出该参数会截断它们......

有没有什么方法可以有效地做到这一点,而不需要在数据库上进行大量开销,而无需在客户端缓存任何内容?

感谢您的建议。

2 个答案:

答案 0 :(得分:0)

将数据表发送到SQL Server的常规方法是使用Table类型参数。我不确定自从基于RAM的练习以来,我建议将其用于数百万的值。替代方法是将SQL Bulk Insert用于临时保存表,并通过保留表而不是形式参数访问您的数据。

答案 1 :(得分:0)

您应该使用为此目的保留的fake temporary table。将所有目标ID插入到客户端应用程序中的假表(一次或一次)中。然后,当他们全部在那里时,对着假表进行联接并返回结果。当你完成后,清除假表。