Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (A-D)

 

CASE-Anweisung

Mit dieser Anweisung wählen Sie einen Ausführungspfad für mehrere Fälle aus.

Syntax 1
CASE Wertausdruck
WHEN [ Konstante | NULL ] THEN Anweisungsliste ...
[ WHEN [ Konstante | NULL ] THEN Anweisungsliste ] ...
[ ELSE Anweisungsliste ]
END [ CASE ]
Syntax 2
CASE
WHEN [ Suchbedingung | NULL] THEN Anweisungsliste ...
[ WHEN [ Suchbedingung | NULL] THEN Anweisungsliste ] ...
[ ELSE Anweisungsliste ]
END [ CASE ]
Bemerkungen

Syntax 1   Die CASE-Anweisung ist eine Steueranweisung, mit der Sie eine Liste von SQL-Anweisungen auswählen können, die auf der Grundlage des Wertes eines Ausdrucks ausgeführt werden sollen. Der Wertausdruck ist ein Ausdruck, der nur einen Wert annimmt, wobei es sich um eine Zeichenfolge, eine Zahl, ein Datum oder um einen anderen SQL-Datentyp handeln kann. Wenn eine WHEN-Klausel für den Wert von Wertausdruck existiert, dann wird die Anweisungsliste in der WHEN-Klausel ausgeführt. Wenn keine geeignete WHEN-Klausel existiert, es aber eine ELSE-Klausel gibt, dann wird die Anweisungsliste in der ELSE-Klausel ausgeführt. Die Ausführung wird bei der ersten Anweisung nach END CASE wieder aufgenommen.

Wenn Wertausdruck Null sein kann, ersetzen Sie den Wertausdruck NULL mithilfe der Funktion ISNULL durch einen anderen Ausdruck.

Syntax 2   Mit dieser Form werden die Anweisungen für die erste erfüllte Suchbedingung in der CASE-Anweisung ausgeführt. Die ELSE-Klausel wird ausgeführt, wenn keine der Suchbedingungen erfüllt wird.

Wenn der Ausdruck NULL sein kann, verwenden Sie die folgende Syntax für die erste Suchbedingung:

WHEN search-condition IS NULL THEN statement-list
CASE-Anweisung unterscheidet sich vom CASE-Ausdruck

Verwechseln Sie die Syntax des CASE-Ausdrucks nicht mit der Syntax der CASE-Anweisung. Weitere Hinweise finden Sie unter CASE-Ausdrücke.

Berechtigungen

Keine.

Nebenwirkungen

Keine.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Persistent Stored Module-Funktion.

Beispiel

Die folgende Prozedur verwendet eine CASE-Anweisung und klassifiziert die in der Tabelle Products der SQL Anywhere-Beispieldatenbank aufgeführten Produkte in "shirt", "hat", "shorts" oder "unknown".

CREATE PROCEDURE ProductType (IN product_ID INT, OUT type CHAR(10))
BEGIN
   DECLARE prod_name CHAR(20);
   SELECT Name INTO prod_name FROM Products
   WHERE ID = product_ID;
   CASE prod_name
   WHEN 'Tee Shirt' THEN
      SET type = 'Shirt'
   WHEN 'Sweatshirt' THEN
      SET type = 'Shirt'
   WHEN 'Baseball Cap' THEN
      SET type = 'Hat'
   WHEN 'Visor' THEN
      SET type = 'Hat'
   WHEN 'Shorts' THEN
      SET type = 'Shorts'
   ELSE
      SET type = 'UNKNOWN'
   END CASE;
END;

Im folgenden Beispiel wird Syntax 2 benutzt, um eine Meldung über die Produktmenge in der SQL Anywhere-Beispieldatenbank zu erzeugen.

CREATE PROCEDURE StockLevel (IN product_ID INT)
BEGIN
   DECLARE qty INT;
   SELECT Quantity INTO qty FROM Products
   WHERE ID = product_ID;
   CASE
   WHEN qty < 30 THEN
      MESSAGE 'Order Stock' TO CLIENT;
   WHEN qty > 100 THEN
      MESSAGE 'Overstocked' TO CLIENT;
   ELSE
      MESSAGE 'Sufficient stock on hand' TO CLIENT;
   END CASE;
END;