Von SELECT zurückgegebene Werte überprüfen

Wenn eine SELECT-Funktion keine Daten oder keine weiteren Daten zurückgibt, wird dieses Ergebnis als normale Situation behandelt, und in SQLCODE wird kein Fehlercode gesetzt. Die Einstellung der Eigenschaften Ausnahme für Datenbankfehler ausgeben und Warnungen als Fehler behandeln im aktuellen Knoten wird ignoriert.

Damit erkannt wird, ob eine SELECT-Funktion keine Daten zurückgegeben hat, müssen Sie ESQL-Code einfügen, der die zurückgegebenen Elemente überprüft. Es stehen verschiedene Methoden zur Auswahl:

  1. EXISTS

    Dieser ESQL-Ausdruck 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 mithilfe von CARDINALITY berechnen, wie viele Einträge empfangen wurden.

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

    Wenn Sie in Ihrer SELECT-Funktion 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.

    Durch die Aufnahme von COALESCE in die SELECT-Funktion können Sie zwischen den Fällen unterscheiden. Beispiel:

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

    Falls dieses Beispiel 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 Ausnahmeliste
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
Fehler in Nachrichtenflüssen behandeln
ESQL-Dateien verwalten
Zugehörige Verweise
Compute-Knoten
Database-Knoten
Filter-Knoten
ESQL-Referenz
SET-Anweisung
Einfache ESQL-Vergleichsoperatoren
CARDINALITY-Funktion
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:28:20

ac17020_