Von SELECT zurückgegebene Werte überprüfen

Wenn eine SELECT-Anweisung keine Daten oder keine weiteren Daten zurückgibt, wird dies als normale Situation behandelt, und in SQLCODE wird kein Fehlercode gesetzt. Dieses Verhalten ist unveränderbar; die Einstellung der Eigenschaften Ausnahme für Datenbankfehler ausgeben und Warnungen als Fehler behandeln des aktuellen Knotens wird ignoriert.

Damit erkannt wird, ob eine SELECT-Anweisung keine Daten zurückgegeben hat, müssen Sie ESQL-Code einfügen, der die zurückgegebenen Elemente überprüft. Dies kann auf mehrere Arten erfolgen:

  1. EXISTS

    Liefert einen Booleschen Wert, der angibt, ob eine SELECT-Funktion einen oder mehrere Werte (TRUE) oder keine Werte (FALSE) zurückgegeben hat.

    IF EXISTS(SELECT T.MYCOL FROM Database.MYTABLE) THEN 
    ...
  2. CARDINALITY

    Wenn Sie als Antwort auf eine SELECT-Funktion eine Feldgruppe erwarten, können Sie mit Hilfe von CARDINALITY berechnen, wie viele Einträge empfangen wurden.

    SET OutputRoot.XML.Testcase.Results[] = ( 
        SELECT T.MYCOL FROM Database.MYTABLE)
    ......
    IF CARDINALITY (OutputRoot.XML.Testcase.Results[]) > 0 THEN
    ........
  3. IS NULL

    Wenn Sie in Ihrer SELECT-Anweisung die Schlüsselwörter THE oder ITEM verwendet haben, wird ein Skalarwert zurückgegeben. Wenn keine Zeilen zurückgegeben wurden, lautet der festgelegte Wert NULL. Möglicherweise enthält die Spalte jedoch den Wert NULL, und Sie möchten zwischen diesen beiden Fällen unterscheiden.

    Hierfür müssen Sie in der SELECT-Anweisung COALESCE einfügen. Beispiel:

    SET OutputRoot.XML.Testcase.Results VALUE = THE (
       SELECT ITEM COALESCE(T.MYCOL, 'WAS NULL')
       FROM Database.MYTABLE);

    Falls dies die Zeichenfolge WAS NULL ergibt, bedeutet dies, dass die Spalte den Wert NULL enthielt. Es bedeutet also nicht, dass keine Zeilen zurückgegeben wurden.

In früheren Releases wurde meistens der SQLCODE 100 gesetzt, wenn keine Daten oder keine weiteren Daten zurückgegeben wurden. Vom Broker wurde eine Ausnahmebedingung ausgegeben, wenn Sie sich für die Behandlung von Datenbankfehlern im Nachrichtenfluss entschieden haben.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Baumstruktur für Ausnahmelisten
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Einen Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
Fehler in Nachrichtenflüssen behandeln
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten (Compute)
Datenbankknoten (Database)
Filterknoten
ESQL-Referenz
SET-Anweisung
Einfache ESQL-Vergleichsoperatoren
CARDINALITY-Funktion
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac17020_