CASE ist eine komplexe Funktion mit zwei Formaten: dem einfachen WHEN-Format und dem WHEN-Format mit Suchbedingung. In beiden Fällen gibt CASE einen Wert zurück, durch den der Pfad für die weitere Verarbeitung gesteuert wird.
Beide Formate von CASE geben einen Wert abhängig von einer Gruppe von Regeln zurück, die in WHEN-Klauseln definiert werden.
Im einfachen WHEN-Format wird der Ausgangswert mit jedem Testwert verglichen, bis eine Übereinstimmung gefunden wird. Das Ergebnis der Funktion CASE ist der Wert des entsprechenden Ergebniswertes. Aus diesem Grund muss der Datentyp von Ausgangswert mit dem Datentyp jedes Testwertes vergleichbar sein.
Die Funktion CASE muss mindestens eine WHEN-Klausel enthalten. Die ELSE-Klausel ist optional. Der Standardausdruck der ELSE-Klausel ist NULL. Ein CASE-Ausdruck wird durch END abgeschlossen. Bei den Testwerten muss es sich nicht um Literalwerte handeln.
Die WHEN-Klausel mit Suchbedingung funktioniert entsprechend, bietet jedoch die zusätzliche Flexibilität, dass mehrere unterschiedliche Werte getestet werden können.
DECLARE CurrentMonth CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET MonthText = CASE CurrentMonth WHEN '01' THEN 'January' WHEN '02' THEN 'February' WHEN '03' THEN 'March' WHEN '04' THEN 'April' WHEN '05' THEN 'May' WHEN '06' THEN 'June' ELSE 'Second half of year' END
DECLARE CurrentMonth CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET MonthText = CASE WHEN Month = '01' THEN 'January' WHEN Month = '02' THEN 'February' WHEN Month = '03' THEN 'March' WHEN Month = '04' THEN 'April' WHEN Month = '05' THEN 'May' WHEN Month = '06' THEN 'June' ELSE 'Second half of year' END
DECLARE CurrentMonth CHAR; DECLARE CurrentYear CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET CurrentYear = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 1 FOR 4); SET MonthText = CASE WHEN CurrentMonth = '01' THEN 'January' WHEN CurrentMonth = '02' THEN 'February' WHEN CurrentMonth = '03' THEN 'March' WHEN CurrentYear = '2000' THEN 'A month in the Year 2000' WHEN CurrentYear = '2001' THEN 'A month in the Year 2001' ELSE 'Not first three months of any year or a month in the Year 2000 or 2001' END;