SQL Server: установить переменную в выражении CASE
Можно ли установить переменную в оператор case? Мой код не работает. Спасибо всем.
CREATE PROCEDURE spReport
@q1 INT,
@q2 INT
AS
BEGIN
-- Dates for the 2 different quarters to be viewed
DECLARE @StartDateQ1 DATETIME
DECLARE @EndDateQ1 DATETIME
DECLARE @StartDateQ2 DATETIME
DECLARE @EndDateQ2 DATETIME
SELECT
CASE @q1
WHEN 1 THEN SET @StartDateQ1 = '20130401'
END
Ответы
Ответ 1
Вы можете использовать
SET @StartDateQ1 = CASE @q1
WHEN 1 THEN '20130401'
END
чтобы установить значение одной переменной в соответствии с выражением CASE
.
Если ваша реальная логика более сложна (например, нужно установить несколько переменных внутри условия), посмотрите вместо IF ... ELSE
.
CASE
- выражение, а не поток управляющей конструкции.
Ответ 2
Вот еще один способ решить эту проблему с помощью оператора IF:
IF @q1 = 1
BEGIN
SET @StartDateQ1 = '20130401'
END