1

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

我有一个网站,用户可以使用多达 30 个属性进行搜索(这意味着他可以使用所有 30 个条件,也可以只使用 5 个)。

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

提前致谢。

4

2 回答 2

1

您可能需要查看动态 sql。

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

本质上,您将根据用户的条件动态构建您的 sql 查询。

于 2012-10-25T04:10:18.073 回答
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)
    ....

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

于 2012-10-25T04:10:26.280 回答