Die CASE-Anweisung (Bedingungsanweisung) verwendet in WHEN-Klauseln definierte Regeln zur Auswahl eines zu verarbeitenden Anweisungsblocks.
Es gibt zwei Formen der CASE-Anweisung: die einfache Form und die Suchform.
Einfache CASE-Anweisung .-<---------------------------------. V | >>-CASE--Hauptausdruck----WHEN--Ausdruck--THEN--Anweisungen-+---> >--+-------------------+--END--CASE---------------------------->< '-ELSE--Anweisungen-'
CASE-Suchanweisung .-<---------------------------------. V | >>-CASE----WHEN--Ausdruck--THEN--Anweisungen-+------------------> >--+-------------------+--END--CASE---------------------------->< '-ELSE--Anweisungen-'
In der einfachen Form wird zuerst der Hauptausdruck ausgewertet. Alle WHEN-Klauselausdrücke werden der Reihe nach ausgewertet, bis das Ergebnis mit dem Ergebnis des Hauptausdrucks übereinstimmt. Danach werden die Anweisungen dieser WHEN-Klausel verarbeitet. Falls keine Übereinstimmung gefunden wird und die optionale ELSE-Klausel vorhanden ist, werden stattdessen die Anweisungen der ELSE-Klausel ausgeführt. Die Testwerte müssen keine Literale sein. Die einzige Voraussetzung ist, dass der Hauptausdruck und die WHEN-Klauselausdrücke Typen ergeben, die verglichen werden können.
In der Suchform werden alle WHEN-Klauselausdrücke der Reihe nach ausgewertet, bis ein Ausdruck TRUE ergibt. Danach werden die Anweisungen dieser WHEN-Klausel ausgeführt. Falls keiner der Ausdrücke TRUE ergibt und die optionale ELSE-Klausel vorhanden ist, werden die Anweisungen der ELSE-Klausel ausgeführt. Es muss keine Ähnlichkeit zwischen den Ausdrücken in den einzelnen CASE-Klauseln vorhanden sein. Die einzige Voraussetzung ist, dass sie alle einen Booleschen Wert ergeben.
In der ESQL-Sprache gibt es sowohl eine CASE-Anweisung als auch eine CASE-Funktion (weitere Informationen zur CASE-Funktion finden Sie im Abschnitt CASE-Funktion). Die CASE-Anweisung wählt aus einer Gruppe von Anweisungen eine auszuführende Anweisung aus. Die CASE-Funktion wählt aus einer Gruppe von Ausdrücken einen auszuwertenden Ausdruck aus, und gibt als Wert den Rückgabewert des gewählten Ausdrucks zurück.
CASE size
WHEN minimum + 0 THEN
SET description = 'small';
WHEN minimum + 1 THEN
SET description = 'medium';
WHEN minimum + 2 THEN
SET description = 'large';
CALL handleLargeObject();
ELSE
SET description = 'unknown';
CALL handleError();
END CASE;
CASE-Suchanweisung: CASE
WHEN i <> 0 THEN
CALL handleI(i);
WHEN j > 1 THEN
CALL handleIZeroAndPositiveJ(j);
ELSE
CALL handleAllOtherCases(j);
END CASE;