SQL Server 2000 “Неправильный синтаксис рядом с ключевым словом 'CASE'”
-
12-09-2019 - |
Вопрос
Ошибка возвращается при попытке выполнить следующую сохраненную процедуру:
EXECUTE p_someProc
--list of vars
CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END,
--more vars
Включены и другие функции ОБРАЩЕНИЯ, хотя выдается только одна ошибка, которая указывает на первый СЛУЧАЙ.
Когда идентичное выражение выполняется в функции ПЕЧАТИ, возвращается ожидаемый результат.
declare @var1 bit set @var1 = 1
declare @var2 bit set @var2 = 1
print(CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var1=1 THEN 2
WHEN @var2=1 THEN 1 END)
На выходе получается '3'
Я предполагаю, что я каким-то образом неправильно использую функцию CASE .Кто-нибудь может придумать обходной путь или способ это исправить?
Заранее благодарю.
--Стэн
Решение
Как упоминает JeremyMcGee выше, вам нужно выполнить назначение, а не пытаться передать обращение исполнителю, попробуйте что-то более похожее на следующее
Declare @varx int
select @varx = CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END
EXECUTE p_someProc @varx
Другие советы
Трудно сказать без дополнительного кода.Возможно, проверьте, что @var1 и @var2 были объявлены?
Убедитесь, что вы тоже присваиваете чему-то результат ОБРАЩЕНИЯ!