【发布时间】:2009-01-22 14:45:08
【问题描述】:
这里的 DBA 正在尝试将我简单的存储过程变成一个动态的 sql 怪物。诚然,我的存储过程可能没有他们想要的那么快,但我不禁相信有一种足够的方法来执行基本上是条件连接的操作。
这是我的存储过程的示例:
SELECT
*
FROM
table
WHERE
(
@Filter IS NULL OR table.FilterField IN
(SELECT Value FROM dbo.udfGetTableFromStringList(@Filter, ','))
)
UDF 将逗号分隔的过滤器列表(例如银行名称)转换为表格。
显然,在 where 子句中包含过滤条件并不理想。欢迎任何关于基于存储的 proc 参数有条件地加入的更好方法的建议。除此之外,是否有人对动态 sql 方法有任何建议或反对?
谢谢
【问题讨论】:
-
“这里的 DBA 正在尝试将我简单的存储过程转变为动态的 sql 怪物。” - 这很有趣,对我来说通常是相反的;)
标签: sql sql-server join dynamic-sql