Utilize 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.XML.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, tipicamente, SELECT gera uma lista de resultados. Por isso, é preciso especificar uma lista como o destino da designação (portanto, "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.XML.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.XML.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.XML.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>