Retornando um Valor Escalar em uma Mensagem XML

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')

Utilização da Palavra-chave ITEM

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>

Efeitos da Palavra-chave THE

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>

Selecionando a partir de uma Lista de Escalares

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>
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05770_