tSQL CASE来控制执行

Bra*_*rad 4 sql t-sql sql-server syntax

我理解如何使用case语句返回不同的值:

SELECT CASE Color
         WHEN 'Blue' THEN 'Water'
         WHEN 'Black' THEN 'Oil'
         WHEN 'Red' THEN 'Blood'
       END
  FROM dbo.Liquid
Run Code Online (Sandbox Code Playgroud)

有没有办法用它来控制流量而不是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
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 8

不,CASE表达式不能用于控制Transact-SQL语句,语句块,用户定义函数和存储过程的执行流程.

有关流控制方法的列表,请参阅控制流语言(Transact-SQL).