У нас есть запрос с большим числом элементов, который имеет несколько параметров, и для каждого из них запрос отличается только на одну часть предложения where
, например:
CASE WHEN @IncludeNames = 1 AND @NameFilter IS NULL THEN
(SELECT blah FROM blahBlah
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
WHERE blahBlah.Id = x.Id)
WHEN @IncludeNames = 1 AND @NameFilter IS NOT NULL THEN
(SELECT blah FROM blahBlah
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
WHERE blahBlah.Id = x.Id
AND table2.Id = @NameFilter
Так происходит для нескольких случаев, отличающихся только одним условиемв предложении where.
Имейте в виду, что это в середине большего выбора.
Есть ли хороший способ очистить это, не помещая все это в одну большую объединенную строку sqlи запустить на нем exec
или использовать что-то абсурдное, например, несколько хранимых процедур на блок, как показано здесь: http://www.developerfusion.com/article/7305/dynamic-search-conditions-in-tsql/7/
Сервер - это SQL Server 2008 R2.ТИА!