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