SQL Server 2000 «Неверный синтаксис рядом с ключевым словом« CASE »» - PullRequest
1 голос
/ 04 декабря 2009

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

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

Имеются и другие функции CASE, хотя выдается только одна ошибка, которая указывает на первый CASE.

Когда идентичное выражение выполняется внутри функции PRINT, возвращается ожидаемый результат.

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. Кто-нибудь может подумать об обходном пути или способе его исправить?

Заранее спасибо.

- Стан

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

Как упоминает JeremyMcGee выше, вам нужно выполнить задание, а не пытаться передать дело в exec, попробуйте что-то более похожее на следующее

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
1 голос
/ 04 декабря 2009

Трудно сказать без кода. Проверьте, что @ var1 и @ var2 были объявлены, возможно?

Убедитесь, что вы также присваиваете результат CASE!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...