带有大量参数的Sql存储过程

时间:2009-06-21 14:26:44

标签: sql sql-server-2008 stored-procedures

我使用的是Sql Server 2008.我的存储过程接受了近150个参数。这种表现有什么不妥吗?

6 个答案:

答案 0 :(得分:6)

当您使用SQL Server 2008时,您可以使用新的Table参数。 如果参数相同,则可以轻松使用表参数。

以下是MSDN的链接。 这是another link,稍微解释一下

享受。

答案 1 :(得分:5)

从性能角度来看,这可能不是问题。但从维护角度来看。

您可以考虑将数据作为单个xml参数发送。详情请见:

http://msdn.microsoft.com/en-us/library/dd788497.aspx

答案 2 :(得分:3)

没有什么错误的性能明智但它闻起来可以用动态SQL做得更好。很难说没看到代码。

答案 3 :(得分:1)

最大值是1,024, 但我认为150已经结束了

答案 4 :(得分:1)

SQL Server新闻组中的规则将熟悉Joe Celko和Tony Rogerson之间的许多争吵,其中一个问题就是使用具有大量参数的存储过程是否是一个好主意。

因为问题是关于表现的,所以这里是Tony的论点:

Don't use CSV/XML - use 1,000 Parameters instead!

Tony Rogerson是英国同胞(US = limey),标题具有讽刺意味(US = NULL)。

答案 5 :(得分:0)

您应该明确确定所有参数的原因。

  1. 是否要将值插入或更新到表中?那么你可能最好为这些值使用表值参数。
  2. 它们是复杂的选择标准吗?然后我怀疑你应该使用XML参数来传递选择标准;否则您可能会重新评估实际使用各种标准的频率。在80%的情况下,您可能会发现更简单的SP可以满足您的需求。