Devolución de un valor escalar en un mensaje XML

Utilice una sentencia SELECT para devolver un valor escalar incluyendo las dos palabras clave THE e ITEM, por ejemplo:

1 + THE(SELECT ITEM T.a FROM Body.Test.A[] AS T WHERE T.b = '123')

Utilización de la palabra clave ITEM

El ejemplo siguiente muestra cómo se utiliza la palabra clave ITEM para seleccionar un elemento y crear un solo valor.

SET OutputRoot.MQMD = InputRoot.MQMD;

SET OutputRoot.XML.Test.Result[] = 
   (SELECT ITEM T.UnitPrice FROM InputBody.Invoice.Purchases.Item[] AS T);

Cuando se recibe el mensaje Invoice como entrada, el ESQL mostrado genera el siguiente mensaje de salida:

<Test>
  <Result>27.95</Result>
  <Result>42.95</Result>
  <Result>59.99</Result>
</Test>

Cuando se especifica la palabra clave ITEM, el mensaje de salida incluye una lista de valores escalares. Compare este mensaje con el que se genera si se omite la palabra clave ITEM, en la que se genera una lista de campos (pares de nombre y valor):

<Test>
  <Result>
    <UnitPrice>27.95</UnitPrice>
  </Result>
  <Result>
    <UnitPrice>42.95</UnitPrice>
  </Result>
  <Result>
    <UnitPrice>59.99</UnitPrice>
  </Result>
</Test>

Efectos de la palabra clave THE

La palabra clave THE convierte una lista que contiene un elemento en el propio elemento.

Los dos ejemplos anteriores especifican una lista como el origen de SELECT en la cláusula FROM (la referencia de campo tiene [] al final para indicar una matriz), por lo tanto, generalmente SELECT genera una lista de resultados. Por lo que debe especificar una lista como el destino de la asignación, es decir, "Result[]" como el destino de la asignación. No obstante, generalmente se sabe que la cláusula WHERE que especifica como parte de SELECT sólo devuelve TRUE para un elemento de la lista. En este caso, utilice la palabra clave THE.

El ejemplo siguiente muestra el efecto de utilizar la palabra clave 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 palabra clave THE significa que el destino de la asignación se convierte en OutputRoot.XML.Test.Result (no se permite "[]"). Su uso genera el siguiente mensaje de salida:

<Test>
  <Result>
    <Publisher>Morgan Kaufmann Publishers</Publisher>
    <Author>Don Chamberlin</Author>
  </Result>
</Test>

Selección de una lista de valores escalares

Observe el mensaje de entrada de ejemplo siguiente:

<Test>
 <A>1</A>
 <A>2</A>
 <A>3</A>
 <A>4</A>
 <A>5</A>
</Test>

Si codifica las sentencias ESQL siguiente para procesar este mensaje:

SET OutputRoot.XML.Test.A[] = 
  (SELECT ITEM A from InputBody.Test.A[]  
   WHERE CAST(A AS INTEGER) BETWEEN 2 AND 4);

se genera el siguiente mensaje de salida:

      <A>2</A>
      <A>3</A>
      <A>4</A>
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05770_