【发布时间】:2018-06-13 18:27:52
【问题描述】:
场景:
- 我有一个存储过程 (
spFetch) 我想返回一个列表 表中的结果。 - 存储过程 (
spFetch) 定义了许多 调用者可能会或可能不会传入的参数。如果未传递参数值 由调用者输入,它们默认为 null。 - 如果这些参数中的任何一个
不为空,它们应该在 select 的 where 子句中使用
(
spFetch) 中的语句以返回过滤结果。 - 我有一个前端应用程序可以充当调用者,但它没有设置 关于如何传递参数(逗号分隔 列表、显式引用等)
这里的想法是,在后端我可以限制可能的查询参数,同时仍然允许范围广泛的参数。
spFetch怎么写才能满足上述场景的所有要求?
对于这个场景必须有一个最佳实践,认为其他开发人员还没有这样做是不是太疯狂了?
【问题讨论】:
-
大多数不是用逗号分隔的列表,因为您必须然后拆分该列表。查看表值参数以配合来自@LukaszSzozda 的厨房水槽链接
-
只是一个旁注,你通常不想命名以 sp 开头的存储过程,因为它可能与以 sp_ 开头的系统冲突,所以只需命名你的 usp_什么的
-
@sniperd - 可能冲突吗?怎么样?
-
厨房水槽绝对是答案,很棒的解决方案! @Lukasz Szozda,想正式将其添加为答案,以便我标记对吗?
标签: sql-server sql-server-2014