Use uma instrução SELECT para retornar um valor escalar incluindo as palavras-chave THE e ITEM.
Por exemplo:
1 + THE(SELECT ITEM T.a FROM Body.Test.A[] AS T WHERE T.b = '123')
O exemplo a seguir mostra o uso da palavra-chave ITEM que seleciona um item e cria um valor único.
SET OutputRoot.MQMD = InputRoot.MQMD;
SET OutputRoot.XMLNS.Test.Result[] =
(SELECT ITEM T.UnitPrice FROM InputBody.Invoice.Purchases.Item[] AS T);
Quando a mensagem Invoice for recebida como entrada, o ESQL mostrado gerará a seguinte mensagem de saída:
<Test>
<Result>27.95</Result>
<Result>42.95</Result>
<Result>59.99</Result>
</Test>
Quando a palavra-chave ITEM for especificada, a mensagem de saída incluirá uma lista de valores escalares. Compare essa mensagem com a mensagem produzida se a palavra-chave ITEM for omitida, na qual uma lista de campos (pares nome/valor) é gerada:
<Test>
<Result>
<UnitPrice>27.95</UnitPrice>
</Result>
<Result>
<UnitPrice>42.95</UnitPrice>
</Result>
<Result>
<UnitPrice>59.99</UnitPrice>
</Result>
</Test>
A palavra-chave THE converte uma lista contendo um item no próprio item.
Os dois exemplos anteriores especificaram uma lista como a origem de SELECT na cláusula FROM (a referência de campo possui [] no final para indicar uma matriz), portanto, geralmente, a função SELECT gera uma lista de resultados. Devido a esse comportamento, você deve especificar uma lista como o destino da designação (portanto o "Result[]" como o destino da designação). No entanto, você normalmente sabe que a cláusula WHERE especificada como parte de SELECT retorna TRUE apenas para um item na lista. Nesse caso, utilize a palavra-chave THE.
O exemplo a seguir mostra o efeito de utilizar a palavra-chave THE:
SET OutputRoot.MQMD = InputRoot.MQMD;
SET OutputRoot.XMLNS.Test.Result =
THE (SELECT T.Publisher, T.Author FROM InputBody.Invoice.Purchases.Item[]
AS T WHERE T.UnitPrice = 42.95);
A palavra-chave THE significa que o destino da designação torna-se OutputRoot.XMLNS.Test.Result (o "[]" não é permitido). Sua utilização gera a seguinte mensagem de saída:
<Test>
<Result>
<Publisher>Morgan Kaufmann Publishers</Publisher>
<Author>Don Chamberlin</Author>
</Result>
</Test>
Considere a seguinte mensagem de entrada de amostra:
<Test>
<A>1</A>
<A>2</A>
<A>3</A>
<A>4</A>
<A>5</A>
</Test>
Se você codificar as seguintes instruções ESQL para processar essa mensagem:
SET OutputRoot.XMLNS.Test.A[] =
(SELECT ITEM A from InputBody.Test.A[]
WHERE CAST(A AS INTEGER) BETWEEN 2 AND 4);
será gerada a seguinte mensagem de saída:
<A>2</A>
<A>3</A>
<A>4</A>