我目前正在开发一个项目,该项目从用户选择中收集ID列表(属于2个表),这需要根据用户选择的内容进一步过滤。为此,我需要将一组ID作为参数(逗号分隔值)发送到存储过程。但据我了解,SQL Server存储过程最多只能接受一个参数中的4000个字符,超出该参数会截断它们......
有没有什么方法可以有效地做到这一点,而不需要在数据库上进行大量开销,而无需在客户端缓存任何内容?
感谢您的建议。
答案 0 :(得分:0)
将数据表发送到SQL Server的常规方法是使用Table类型参数。我不确定自从基于RAM的练习以来,我建议将其用于数百万的值。替代方法是将SQL Bulk Insert用于临时保存表,并通过保留表而不是形式参数访问您的数据。
答案 1 :(得分:0)
您应该使用为此目的保留的fake temporary table。将所有目标ID插入到客户端应用程序中的假表(一次或一次)中。然后,当他们全部在那里时,对着假表进行联接并返回结果。当你完成后,清除假表。