我理解如何使用case语句返回不同的值:
SELECT CASE Color
WHEN 'Blue' THEN 'Water'
WHEN 'Black' THEN 'Oil'
WHEN 'Red' THEN 'Blood'
END
FROM dbo.Liquid
有没有办法用它来控制流量而不是IF-ELSE,即
DECLARE @Color varchar()
SELECT @Color = Color FROM dbo.Liquid WHERE ID = @MyID
CASE (@Color)
WHEN 'Blue' THEN SELECT 'Water'
WHEN 'Black' THEN SELECT 'Oil'
WHEN 'Red' THEN PRINT 'HELP! I''m bleeding!'
END
答案 0 :(得分:8)
不,CASE expression不能用于控制Transact-SQL语句,语句块,用户定义函数和存储过程的执行流程。
有关流量控制方法的列表,请参阅Control-of-Flow Language (Transact-SQL)。
答案 1 :(得分:1)
不,您需要为该逻辑使用IF语句,因为在CASE语句中您基本上返回了一个值。你可以这样做:
declare @result varchar(500)
SET @result =
CASE
WHEN @Color = 'Blue' THEN 'Water'
WHEN @Color = 'Black' THEN 'Oil'
WHEN @Color = 'Red' THEN 'HELP! I''m bleeding'
END
IF @Color = 'Red'
PRINT @result
但我认为这是你能做的最好的事情。就个人而言,我只是在这里使用IF
声明,因为这是最好的选择。