Funktion FOR

Die Feldfunktion FOR 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 des Feldverweises 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 im Feldverweis 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.
  • Andernfalls wird UNKNOWN zurückgegeben.
Die Schlüsselwörter ANY und SOME stimmen miteinander überein. 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:
  • 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.
  • Andernfalls wird UNKNOWN zurückgegeben.
Zur weiteren Erklärung basieren die folgenden Beispiele auf der Nachricht, die in Musternachricht 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
Musternachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 18.05.2006
ak18490_