我有一个关于在 SQL Server 中设计存储过程的一般性问题:
我有一个网站,用户可以使用多达 30 个属性进行搜索(这意味着他可以使用所有 30 个条件,也可以只使用 5 个)。
您将如何为此设计存储过程?在设计此程序时,您会记住什么?
提前致谢。
我有一个关于在 SQL Server 中设计存储过程的一般性问题:
我有一个网站,用户可以使用多达 30 个属性进行搜索(这意味着他可以使用所有 30 个条件,也可以只使用 5 个)。
您将如何为此设计存储过程?在设计此程序时,您会记住什么?
提前致谢。
您可能需要查看动态 sql。
这是我认为的一些有价值的信息:http: //www.sommarskog.se/dynamic_sql.html
本质上,您将根据用户的条件动态构建您的 sql 查询。
你可以这样做:
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)
....
通过具有可为空的参数,您可以轻松地将任何参数组合传递给您的存储过程。请注意观察您的执行计划并确保不会发生参数嗅探。