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)
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
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
