Verwenden Sie eine SELECT-Anweisung, um einen Skalarwert zurückzugeben, und fügen Sie die Schlüsselwörter THE und ITEM ein. Beispiel:
1 + THE(SELECT ITEM T.a FROM Body.Test.A[] AS T WHERE T.b = '123')
Das folgende Beispiel veranschaulicht die Verwendung des Schlüsselworts ITEM zur Auswahl eines Elements und zur Erstellung eines einzelnen Werts.
SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.XML.Test.Result[] = (SELECT ITEM T.UnitPrice FROM InputBody.Invoice.Purchases.Item[] AS T);
Wenn die Nachricht 'Invoice' (Rechnung) als Eingabe empfangen wird, generiert der gezeigte ESQL-Code folgende Ausgabenachricht:
<Test> <Result>27.95</Result> <Result>42.95</Result> <Result>59.99</Result> </Test>
Wenn das Schlüsselwort ITEM angegeben wird, enthält die Ausgabenachricht eine Liste mit Skalarwerten. Vergleichen Sie diese Nachricht mit der Nachricht, die erstellt wird, wenn das Schlüsselwort ITEM weggelassen wird; in dieser Nachricht wird eine Liste mit Feldern (Name/Wert-Paaren) generiert:
<Test> <Result> <UnitPrice>27.95</UnitPrice> </Result> <Result> <UnitPrice>42.95</UnitPrice> </Result> <Result> <UnitPrice>59.99</UnitPrice> </Result> </Test>
Das Schlüsselwort THE konvertiert eine Liste, die ein Element enthält, in das Element selbst.
In den beiden vorherigen Beispielen wurde eine Liste als Quelle von SELECT in der FROM-Klausel angegeben (der Feldverweis enthält '[]' am Ende, um eine Feldgruppe anzugeben), d. h., normalerweise generiert SELECT eine Liste mit Ergebnissen. Deshalb müssen Sie eine Liste als Ziel der Zuordnung angeben (also "Result[]" als Ziel der Zuordnung). Es ist jedoch oft der Fall, dass die WHERE-Klausel, die sie als Teil der SELECT-Klausel angeben, nur für ein Element der Liste TRUE zurückgibt. Verwenden Sie in diesem Fall das Schlüsselwort THE.
Das folgende Beispiel zeigt die Auswirkung der Verwendung des Schlüsselworts THE:
SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.XML.Test.Result = THE (SELECT T.Publisher, T.Author FROM InputBody.Invoice.Purchases.Item[] AS T WHERE T.UnitPrice = 42.95);
Das Schlüsselwort THE bedeutet, dass OutputRoot.XML.Test.Result zum Ziel der Zuordnung wird ("[]" ist nicht zulässig). Durch die Verwendung des Schlüsselworts wird folgende Ausgabenachricht generiert:
<Test> <Result> <Publisher>Morgan Kaufmann Publishers</Publisher> <Author>Don Chamberlin</Author> </Result> </Test>
Betrachten Sie die folgende Mustereingabenachricht:
<Test> <A>1</A> <A>2</A> <A>3</A> <A>4</A> <A>5</A> </Test>
Zur Verarbeitung dieser Nachricht werden folgende ESQL-Anweisungen codiert:
SET OutputRoot.XML.Test.A[] = (SELECT ITEM A from InputBody.Test.A[] WHERE CAST(A AS INTEGER) BETWEEN 2 AND 4);
Als Ergebnis wird folgende Ausgabenachricht generiert:
<A>2</A> <A>3</A> <A>4</A>