Utilizzare un'istruzione SELECT per restituire un valore scalare includendo le parole chiave THE ed ITEM, ad esempio:
1 + THE(SELECT ITEM T.a FROM Body.Test.A[] AS T WHERE T.b = '123')
L'esempio riportato di seguito illustra l'utilizzo della parola chiave ITEM per selezionare un elemento e creare un valore singolo.
SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.XML.Test.Result[] = (SELECT ITEM T.UnitPrice FROM InputBody.Invoice.Purchases.Item[] AS T);
Quando il messaggio Invoice viene ricevuto come input, il codice ESQL illustrato genera il seguente messaggio di output:
<Test> <Result>27.95</Result> <Result>42.95</Result> <Result>59.99</Result> </Test>
Quando viene specificata la parola chiave ITEM, il messaggio di output contiene un elenco di valori scalari. Confrontare questo messaggio con quello prodotto se la parola chiave ITEM non viene utilizzata, in cui viene generato un elenco di campi (coppie nome-valore):
<Test> <Result> <UnitPrice>27.95</UnitPrice> </Result> <Result> <UnitPrice>42.95</UnitPrice> </Result> <Result> <UnitPrice>59.99</UnitPrice> </Result> </Test>
La parola chiave THE converte un elenco che contiene un elemento nell'elemento stesso.
Nei due esempi precedenti è specificato un elenco come origine della SELECT nella clausola FROM (al termine del riferimento di campo è specificato [] per indicare un array), per cui generalmente la SELECT genera un elenco di risultati. Per questo motivo, è necessario specificare un elenco come destinazione dell'assegnazione (quindi "Result[]" come destinazione dell'assegnazione). Tuttavia, la clausola WHERE specificata come parte di SELECT restituisce TRUE per un elemento nell'elenco. In questo caso, utilizzare la parola chiave THE.
L'esempio riportato di seguito illustra l'effetto dell'utilizzo della parola chiave 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);
La parola chiave THE indica che la destinazione dell'assegnazione diventa OutputRoot.XML.Test.Result (non è consentito utilizzare "[]"). Il suo utilizzo genera il seguente messaggio di output:
<Test> <Result> <Publisher>Morgan Kaufmann Publishers</Publisher> <Author>Don Chamberlin</Author> </Result> </Test>
Considerare il seguente messaggio di input di esempio:
<Test> <A>1</A> <A>2</A> <A>3</A> <A>4</A> <A>5</A> </Test>
Se si utilizzano le seguenti istruzioni ESQL per elaborare questo messaggio:
SET OutputRoot.XML.Test.A[] = (SELECT ITEM A from InputBody.Test.A[] WHERE CAST(A AS INTEGER) BETWEEN 2 AND 4);
viene generato il seguente messaggio di output:
<A>2</A> <A>3</A> <A>4</A>