从网站创建包含许多参数的存储过程

时间:2012-10-25 04:05:46

标签: sql sql-server database

我有一个关于在SQL Server中设计存储过程的一般性问题:

我有一个网站,用户可以使用最多30个属性进行搜索(这意味着他可以使用所有30个标准,或者他可能只使用5个)。

您将如何为此设计存储过程?在设计这个程序时你会记住什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可能需要查看动态sql。

以下是我认为的一些有价值的信息: http://www.sommarskog.se/dynamic_sql.html

基本上,您将根据用户的标准动态构建SQL查询。

答案 1 :(得分:1)

你可以这样做:

create procedure foo
@param1 int = null,
@param2 int = null,
@param3 int = null,
...

然后在你的where子句中你可以这样做:

where (@param1 = null or @param1 = somevalue)
    and (@param2 = null or @param2 = somevalue)
    ....

通过使用可为空的参数,您可以轻松地将任何参数组合传递给存储过程。请注意观察执行计划并确保不会发生参数嗅探。