Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

IF - SQL-Anweisungen bedingt ausführen

Die IF-Anweisung führt SQL-Anweisungen in Abhängigkeit von bestimmten Bedingungen aus. Sie darf nur in einer Routine angegeben werden, d.h. im Rahmen einer CREATE PROCEDURE- oder CREATE FUNCTION-Anweisung. Routinen und ihre Verwendung in SESAM/SQL sind detailliert im Kapitel „Routinen" beschrieben.

Die IF-Anweisung ist eine nicht-atomare SQL-Anweisung, d.h. in ihr können weitere (atomare oder nicht-atomare) SQL-Anweisungen auftreten.



IF suchbedingung

   THEN routine_sql_anweisung; [ routine_sql_anweisung; ]...

   [ELSEIF suchbedingung THEN routine_sql_anweisung; [ routine_sql_anweisung; ]...]...

   [ELSE routine_sql_anweisung; [ routine_sql_anweisung; ]... ]

END IF



suchbedingung

Suchbedingung, deren Auswertung einen Wahrheitswert ergibt.
Die Suchbedingung darf Parameter von Routinen und (wenn die Anweisung Teil einer COMPOUND-Anweisung ist) lokale Variablen, jedoch keine Benutzervariablen enthalten. 
Die Angabe einer Spalte ist nur erlaubt, wenn sie Teil einer Unterabfrage ist.


routine_sql_anweisung

SQL-Anweisung, die im THEN- oder ELSE-Teil der IF-Anweisung ausgeführt werden soll.
Eine SQL-Anweisung wird mit „;“ (Semikolon) abgeschlossen.
Mehrere SQL-Anweisungen können nacheinander angegeben werden. Sie werden in der angegebenen Reihenfolge ausgeführt.
Vor der Durchführung einer SQL-Anweisung werden keine Privilegien geprüft. Eine SQL-Anweisung in einer Routine darf auf die Parameter der Routine und (wenn die Anweisung Teil einer COMPOUND-Anweisung ist) auf lokale Variablen, jedoch nicht auf Benutzervariablen zugreifen.

Syntax und Bedeutung von routine_sql_anweisung sind zentral im Abschnitt „SQL-Anweisungen in Routinen" beschrieben. Die dort genannten SQL-Anweisungen dürfen verwendet werden.

Ausführungshinweise

Die IF- und die ELSEIF-Klauseln werden von links nach rechts abgearbeitet. Für die erste THEN-Klausel, deren Suchbedingung Wahrheitswert wahr ergibt, werden die zugehörigen SQL-Anweisungen bearbeitet. Die IF-Anweisung ist danach beendet.

Ergibt keine der Suchbedingungen den Wahrheitswert wahr und existiert eine ELSE-Klausel, dann werden die SQL-Anweisungen der ELSE-Klausel bearbeitet.

SQL-Anweisungen werden nicht bearbeitet, wenn die zugehörige Suchbedingung den Wahrheitswert unbestimmt ergibt.

Die IF-Anweisung ist eine nicht-atomare Anweisung:

    • Wenn die IF-Anweisung Teil einer COMPOUND-Anweisung ist, dann gelten die dort beschriebenen Regeln, insbesondere die dort definierten Fehler-Routinen.

    • Wenn die IF-Anweisung nicht Teil einer COMPOUND-Anweisung ist und eine der SQL-Anweisungen einen SQLSTATE meldet, dann werden ggf. nur die Änderungen dieser SQL-Anweisung rückgängig gemacht. Die IF-Anweisung und die Routine, in der sie enthalten ist, werden abgebrochen. Die SQL-Anweisung, in der die Routine verwendet wurde, liefert den betreffenden SQLSTATE zurück.


Beispiel

Die SQL-Anweisungen werden nur durchgeführt, wenn die Tabelle tab nicht leer ist.

IF (SELECT COUNT(*) FROM tab) > 0 THEN routine_sql_anweisung END IF

Siehe auch

CREATE PROCEDURE, CREATE FUNCTION