Как и в случае с названием, которое я уже объяснял, я борюсь с моим предложением WHERE
в моей хранимой процедуре SQL.SQL Server: Where clause внутри IF .. ELSE
Я получил запрос SELECT
, который хорошо соединяется с несколькими таблицами и в конце, если получил предложение WHERE
, которое дает конкретные значения для поиска.
Моя проблема заключается в том, что я хочу, чтобы расширить эту хранимую процедуру для 2-х различных WHERE
статей, но я не могу получить мой IF ELSE
правильно разобрать запрос ..
Например:
SELECT .......
FROM TABLE_X
INNER JOIN TABLE_Y.....
WHERE
man.Klant_ID = @Klant
AND (@ManID = 0 OR man.ID = @ManID)
AND .... (which continues like the rule above)
Здесь я хочу, чтобы получить что-то вроде этого:
SELECT .......
FROM TABLE_X
INNER JOIN TABLE_Y.....
IF @TEMPVAR = ''
WHERE [email protected]
AND (@ManID = 0 OR man.ID = @ManID)
AND...
ELSE
WHERE TABLE_X.ID IN (@TEMPVAR)
(и @tempvar
должны содержать разделенные запятыми идентификаторы, как 10001,10002,10003
)
Я борюсь с синтаксисом и искал какое-то время, но не могу найти правильное решение.
Заранее благодарен!
это может помочь http://stackoverflow.com/questions/10191424/case-in-where-sql-server – markg
Довольно просто .... вы не можете это сделать ... Вам нужно поставить все предложение select в ваш IF ELSE .. – logixologist
При написании SQL, не думайте о структурах управления 'IF/ELSE' как механизмы для _build_ SQL заявления. Вместо этого любая логика, связанная с результатами, возвращаемыми запросом, должна быть встроена в его предложение WHERE, и переменные могут использоваться там, как они могут, в рамках функции или хранимой процедуры. –