Wiederholungsfelder in einer Nachrichtenbaumstruktur bearbeiten

In diesem Abschnitt wird die Verwendung der Funktion SELECT und anderer Spaltenfunktionen für die Bearbeitung von Wiederholungsfeldern in einer Nachrichtenbaumstruktur beschrieben.

Angenommen, Sie möchten eine bestimmte Aktion für Rechnungen durchführen, bei denen der gesamte Bestellwert einen bestimmten Betrag übersteigt. Zur Berechnung der Gesamtbestellmenge in einem Feld Rechnung müssen in allen Feldern Elemente der Nachricht die Felder Preis mit den Feldern Anzahl multipliziert und die Ergebnisse addiert werden. Verwenden Sie dazu den Ausdruck SELECT folgendermaßen:

(
 SELECT SUM( CAST(I.Price AS DECIMAL) * CAST(I.quantity AS INTEGER) )
  FROM Body.Invoice.Purchases."Item"[] AS I
) 

In dem Beispiel wird angenommen, dass Sie den Ausdruck CAST verwenden müssen, um die Zeichenfolgewerte der Felder Price und Quantity in die korrekten Datentypen umzusetzen. Die Umsetzung des Felds Price in eine Dezimalzahl erzeugt einen Dezimalwert mit der natürlichen Anzahl an Nachkommastellen und Genauigkeit (d. h. mit der Anzahl an Nachkommastellen und Genauigkeit, die zur Darstellung der Zahl erforderlich sind). Diese Umsetzungen wären nicht erforderlich, wenn die Daten bereits in einem passenden Datentyp vorlägen.

Der Auswahlausdruck (SELECT) funktioniert auf ähnliche Weise wie die Vergleichsfunktion und sehr ähnlich wie SELECT in Standarddatenbank-SQL. Die FROM-Klausel gibt an, was iteriert wird (in diesem Fall alle Item-Felder in Invoice) und legt fest, dass die aktuelle Instanz von Item mittels I referenziert werden kann. Bei dieser Form von SELECT ist eine Spaltenfunktion involviert, in diesem Fall die Funktion SUM, d. h. SELECT wird ausgewertet, indem die Ergebnisse der Auswertung des Ausdrucks in der SUM-Funktion für jedes Item-Feld in Invoice addiert werden. Wie auch bei standardmäßigem SQL werden Nullwerte von Spaltenfunktionen ignoriert, mit Ausnahme der unten erklärten COUNT-Funktion; und ein Nullwert wird nur von der Spaltenfunktion zurückgegeben, wenn keine Nicht-Nullwerte kombiniert werden können.

Die anderen bereitgestellten Spaltenfunktionen sind MAX, MIN und COUNT. Die COUNT-Funktion weist zwei Formen auf, die hinsichtlich Nullwerte auf verschiedene Art funktionieren. In der ersten Form wird sie ähnlich wie die obige SUM-Funktion verwendet. Beispiel:

SELECT COUNT(I.Quantity)
  FROM Body.Invoice.Purchases."Item"[] AS I

Dieser Ausdruck gibt die Zahl der Item-Felder zurück, für die das Feld Quantity kein Nullwert ist, d. h., die COUNT-Funktion zählt die Werte, die kein Nullwert sind, auf die gleiche Weise wie die SUM-Funktion die Nicht-Nullwerte addiert. Die alternative Methode zur Verwendung der COUNT-Funktion sieht folgendermaßen aus:

SELECT COUNT(*)
  FROM Body.Invoice.Purchases."Item"[] AS I

Bei COUNT(*) wird die Gesamtzahl der Item-Felder gezählt, unabhängig davon, ob eines der Felder NULL ist. Das obige Beispiel entspricht der Nutzung der CARDINALITY-Funktion wie im folgenden Beispiel:

CARDINALITY(Body.Invoice.Purchases."Item"[]

In all den Beispielen zu SELECT könnten Sie (genauso wie bei standardmäßigem SQL) mit einer WHERE-Klausel eine Filterung für die Felder bereitstellen.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Nachrichtenfluss entwerfen
Nachrichtenflussinhalt definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten
Datenbankknoten
Filterknoten
ESQL-Referenz
Funktion CARDINALITY
Funktion SELECT
Musternachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ak20705_