Встроенный условный оператор в хранимой процедуре - PullRequest
1 голос
/ 07 апреля 2010

Вот псевдокод для моего встроенного запроса в моем коде:

select columnOne
from myTable
where columnOne = '#variableOne#'
  if len(variableTwo) gt 0
      and columnTwo = '#variableTwo#'
  end

Я бы хотел перенести это в хранимую процедуру, но у меня возникли проблемы с правильным построением запроса. Я предполагаю, что это будет что-то вроде

select columnOne
from myTable
where columnOne = @variableOne
  CASE
    WHEN len(@variableTwo) <> 0 THEN and columnTwo = @variableTwo
  END

Это дает мне синтаксическую ошибку.

Может ли кто-нибудь сказать мне, что я ошибся.

Кроме того, я бы хотел оставить только один запрос, а не просто один оператор if. Кроме того, я не хочу собирать sql в хранимой процедуре и запускать на ней Exec().

1 Ответ

4 голосов
/ 07 апреля 2010

Включите свою логику, и вы получите желаемый результат.

select columnOne
from myTable
where columnOne = @variableOne
and (len(@variableTwo) = 0 or columnTwo = @variableTwo)
...