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>
Notices | Trademarks | Downloads | Library | Support | Feedback
Copyright IBM Corporation 1999, 2006 Last updated: 5월 25, 2006
ak05770_