SQL Server 2000 “Неправильный синтаксис рядом с ключевым словом 'CASE'”

StackOverflow https://stackoverflow.com/questions/1845256

Вопрос

Ошибка возвращается при попытке выполнить следующую сохраненную процедуру:

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 были объявлены?

Убедитесь, что вы тоже присваиваете чему-то результат ОБРАЩЕНИЯ!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top