CASE (Anweisung)

Die Anweisung CASE wählt einen Ausführungspfad auf der Basis mehrerer Bedingungen aus. Diese Anweisung sollte nicht mit dem Ausdruck CASE verwechselt werden, der die Auswahl eines Ausdrucks auf der Basis der Auswertung einer oder mehrerer Bedingungen ermöglicht.

Aufruf

Diese Anweisung kann eingebettet werden in:
  • Eine SQL-Prozedurdefinition
  • Compound-SQL-Anweisung (kompilierte Anweisung)
  • Zusammengesetzte SQL-Anweisung (Inline-Anweisung)
Die Compound-SQL-Anweisungen können in eine SQL-Prozedurdefinition, SQL-Funktionsdefinition oder SQL-Triggerdefinition eingebettet werden. Die Anweisung CASE ist keine ausführbare Anweisung und kann nicht dynamisch vorbereitet werden.

Berechtigung

Zum Aufrufen der Anweisung CASE sind keine Berechtigungen erforderlich. Die Berechtigungen, die von der Berechtigungs-ID der Anweisung gehalten werden, müssen jedoch alle erforderlichen Berechtigungen zum Aufrufen der SQL-Anweisungen und Ausdrücke enthalten, die in die Anweisung CASE eingebettet sind.

Syntax

Read syntax diagramSkip visual syntax diagramCASEsearched-case-statement-when-clausesimple-case-statement-when-clauseEND CASE
simple-case-statement-when-clause
Read syntax diagramSkip visual syntax diagramexpressionWHENexpressionTHENSQL-procedure-statement;ELSESQL-procedure-statement;
searched-case-statement-when-clause
Read syntax diagramSkip visual syntax diagramWHENsearch-conditionTHENSQL-procedure-statement;ELSESQL-procedure-statement;

Beschreibung

CASE
Beginnt eine case-Anweisung.
simple-case-statement-when-klausel
Der Wert des Ausdrucks vor dem ersten Schlüsselwort WHEN wird auf Gleichheit mit dem Wert jedes Ausdrucks getestet, der auf das Schlüsselwort WHEN folgt. Wenn die Suchbedingung wahr ist, wird die THEN-Anweisung ausgeführt. Wenn das Ergebnis unbekannt oder falsch ist, wird die Verarbeitung mit der nächsten Suchbedingung fortgesetzt. Wenn das Ergebnis keiner der Suchbedingungen entspricht und eine ELSE-Klausel vorhanden ist, werden die Anweisungen in der ELSE-Klausel verarbeitet.
WHERE-Klausel für Suchanweisung
Die Suchbedingung , die auf das Schlüsselwort WHEN folgt, wird ausgewertet. Wenn die Auswertung 'true' ergibt, werden die Anweisungen in der zugehörigen THEN-Klausel verarbeitet. Wenn die Auswertung ' false' ergibt oder unbekannt ist, wird die nächste Suchbedingung ausgewertet. Wenn keine Suchbedingung als wahr ausgewertet wird und eine ELSE-Klausel vorhanden ist, werden die Anweisungen in der ELSE-Klausel verarbeitet.
SQL-Prozeduranweisung
Gibt eine Anweisung an, die aufgerufen werden soll Siehe SQL-Prozeduranweisung in der Anweisung Compound-SQL (kompiliert) .
Fall beenden
Beendet eine case-Anweisung.

Hinweise

  • Wenn keine der in WHEN angegebenen Bedingungen wahr ist und keine ELSE-Klausel angegeben ist, wird zur Laufzeit ein Fehler ausgegeben und die Ausführung der Anweisung case beendet (SQLSTATE 20000).
  • Stellen Sie sicher, dass Ihre Anweisung CASE alle möglichen Ausführungsbedingungen abdeckt.

Beispiele

Aktualisieren Sie abhängig vom Wert der SQL-Variablen v_workdeptdie Spalte DEPTNAME in der Tabelle DEPARTMENT mit dem entsprechenden Namen.

  • Beispiel 1: Das folgende Beispiel zeigt, wie dies mithilfe der Syntax für eine simple-case-statement-when-Klauselgeschieht:
       CASE v_workdept
         WHEN'A00'
           THEN UPDATE department
           SET deptname = 'DATA ACCESS 1';
         WHEN 'B01'
           THEN UPDATE department
           SET deptname = 'DATA ACCESS 2';
         ELSE UPDATE department
           SET deptname = 'DATA ACCESS 3';
       END CASE
  • Beispiel 2: Das folgende Beispiel zeigt, wie dies mithilfe der Syntax für eine gesuchte-case-anweisung-when-klauselausgeführt wird:
       CASE
         WHEN v_workdept = 'A00'
           THEN UPDATE department
           SET deptname = 'DATA ACCESS 1';
         WHEN v_workdept = 'B01'
           THEN UPDATE department
           SET deptname = 'DATA ACCESS 2';
         ELSE UPDATE department
           SET deptname = 'DATA ACCESS 3';
       END CASE