4 Stimmen

tSQL CASE zur Kontrolle der Ausführung

Ich weiß, wie man eine Case-Anweisung verwendet, um verschiedene Werte zurückzugeben:

SELECT CASE Color
         WHEN 'Blue' THEN 'Water'
         WHEN 'Black' THEN 'Oil'
         WHEN 'Red' THEN 'Blood'
       END
  FROM dbo.Liquid

Gibt es eine Möglichkeit, den Ablauf anstelle von IF-ELSE zu steuern, d.h.

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

8voto

OMG Ponies Punkte 312816

Nein, die CASE-Ausdruck kann nicht verwendet werden, um den Ablauf der Ausführung von Transact-SQL-Anweisungen, Anweisungsblöcken, benutzerdefinierten Funktionen und gespeicherten Prozeduren zu steuern.

Eine Liste der Control-of-Flow-Methoden finden Sie unter Ablaufsteuerungssprache (Transact-SQL) .

1voto

dcp Punkte 52822

Nein, Sie müssten eine IF-Anweisung für diese Logik verwenden, da Sie in einer CASE-Anweisung im Grunde einen Wert zurückgeben. Sie könnten etwas wie dies tun:

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

Aber ich denke, das ist das Beste, was Sie tun können. Ich persönlich würde einfach eine IF Aussage hier, da dies die beste Wahl ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X