Здесь у нас большой запрос с несколькими параметрами, и для каждого из них запрос отличается только одной частью предложения 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/динамическиеусловия-поиска-в-tsql/7/
Сервер - SQL Server 2008 R2. ТИА!
@IncludeNames = 0
ли? Что произойдет, если это так? - person Clockwork-Muse   schedule 10.09.2011