Как использовать Switch в SQL Server
Я хочу использовать CASE
в моей хранимой процедуре. Я получаю некоторую синтаксическую ошибку в моем коде:
select
case @Temp
when 1 then (@[email protected]+1)
when 2 then (@[email protected]+1)
end
При запуске я получаю:
неправильный синтаксис рядом с '='.
на этой строке:
@selectoneCount = @selectoneCount + 1
около равного.
На самом деле, я получаю возвращаемое значение из другого sp в @temp, а затем он @temp = 1, тогда я хочу включить счет @SelectoneCount на 1 и так далее.
Пожалуйста, дайте мне знать, что такое правильный синтаксис.
Ответы
Ответ 1
CASE
- это просто "переключатель", чтобы вернуть значение - не выполнять весь блок кода.
Вам нужно изменить код на что-то вроде этого:
SELECT
@selectoneCount = CASE @Temp
WHEN 1 THEN @selectoneCount + 1
WHEN 2 THEN @selectoneCount + 1
END
Если @temp
не установлено ни одно из этих значений (1 или 2), вы вернетесь к NULL
Ответ 2
Это оператор select, поэтому каждая ветвь корпуса должна что-то возвращать. Если вы хотите выполнить действия, просто используйте if.
Ответ 3
select
@selectoneCount = case @Temp
when 1 then (@selectoneCount+1)
when 2 then (@selectoneCount+1)
end
select @selectoneCount
Ответ 4
На самом деле, я получаю возвращаемое значение из другого sp в @temp, а затем он @temp = 1, тогда я хочу включить счет @SelectoneCount на 1 и так далее. Пожалуйста, дайте мне знать, что такое правильный синтаксис.
Что случилось с:
IF @Temp = 1 --Or @Temp = 2 also?
BEGIN
SET @SelectoneCount = @SelectoneCount + 1
END
(Несмотря на то, что это относится к процессуальному коду - обычно это не лучший способ использовать SQL)