FOR-Funktion

Die FOR-Feldfundktion bewertet einen Ausdruck und weist einen Ergebniswert TRUE (wahr), FALSE (falsch) oder UNKNOWN (unbekannt) zu.

SYNTAX

FOR ermöglicht Ihnen, einen Ausdruck zu schreiben, der über alle Instanzen eines Wiederholungsfeld iteriert. Für jede Instanz verarbeitet er einen Booleschen Ausdruck und sortiert die Ergebnisse.

Beispiel:
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
Anmerkung:
  1. Im Hinblick auf die Vergleichsfunktion soll zunächst auf die eckigen Klammern [] am Ende der Feldreferenz nach FOR ALL aufmerksam gemacht werden. Diese definieren die Iteration über alle Instanzen des Felds Item.

    In einigen Fällen scheint diese Syntax unnötig, da diese Informationen aus dem Kontext ersichtlich sind; sie wird jedoch aus Gründen der Konsistenz mit anderen Syntaxbereichen dennoch verwendet.

  2. Die AS-Klausel ordnet den Namen I in der Feldreferenz der aktuellen Instanz des Wiederholungsfelds zu. Dieses Konzept entspricht ungefähr dem Konzept der Iteratorklassen, das in einigen objektorientierten Sprachen wie C++ verwendet wird. Der Ausdruck in runden Klammern ist ein Vergleichselement, das für jedes Instanz des Felds Item ausgewertet wird.

Wenn Sie das Schlüsselwort ALL angeben, iteriert die Funktion über alle Instanzen des Felds 'Item' innerhalb von Body.Invoice.Purchases und bewertet das Vergleichselement I.Quantity <= 50. Wenn das Vergleichselement:
  • TRUE als Auswertung ergibt (falls das Feld leer ist oder bei allen Instanzen von Item), wird TRUE zurückgegeben.
  • FALSE als Auswertung ergibt (für eine beliebige Instanz von Item), wird FALSE zurückgegeben.
  • etwas anderes ergibt, wird UNKNOWN zurückgegeben.
Die Schlüsselwörter ANY und SOME sind funktional entsprechend. Wenn Sie eines davon verwenden, iteriert die Funktion über alle Instanzen des Felds 'Item' innerhalb von Body.Invoice.Purchases und bewertet das Vergleichselement I.Quantity <= 50. Wenn das Vergleichselement:
  • FALSE als Auswertung ergibt (falls das Feld leer ist oder bei allen Instanzen von Item), wird FALSE zurückgegeben.
  • TRUE als Auswertung ergibt (für eine beliebige Instanz von Item), wird TRUE zurückgegeben.
  • etwas anderes ergibt, wird UNKNOWN zurückgegeben.
Zur weiteren Erklärung basieren die folgenden Beispiele auf der Nachricht, die in Beispielnachricht beschrieben wird. Im Filterausdruck
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')
ergibt das untergeordnete Vergleichselement TRUE. Der nächste Ausdruck ergibt jedoch FALSE:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')
Der Grund hierfür ist, dass 'C Primer' in dieser Rechnung nicht enthalten ist. Wenn in dieser Instanz einige der Artikel (Item) in der Rechnung (invoice) kein Feld für den Buchtitel enthalten, gibt das untergeordnete Vergleichselement UNKNOWN zurück, und die Vergleichsfunktion gibt den Wert UNKNOWN zurück.
Stellen Sie sich mit großer Sorgfalt auf die Möglichkeit von Nullwerten ein. Damit die Möglichkeit der Rückgabe von Nullwerten abgedeckt ist, schreiben Sie folgenden Filter mit einer expliziten Prüfung im Hinblick auf das Vorhandensein des Felds:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND
I.Book.Title = 'C Primer')
Das Vergleichselement IS NOT NULL stellt sicher, dass vom untergeordneten Vergleichselement ein FALSE-Wert zurückgegeben wird, wenn ein Artikelfeld (Item) kein Buch (Book) enthält.
Zugehörige Konzepte
Übersicht zu ESQL
Zugehörige Tasks
ESQL erstellen
Zugriff auf unbekannte Mehrfachvorkommen eines Elements
Zugehörige Verweise
Syntaxdiagramme: verfügbare Typen
Beispielnachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak18490_