Devolución de un valor escalar en un mensaje XML

Utilice una sentencia SELECT para devolver un valor escalar incluyendo las 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 el uso de la palabra clave ITEM para seleccionar un elemento y crear un único valor.

SET OutputRoot.MQMD = InputRoot.MQMD;

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

Cuando el mensaje Invoice se recibe como entrada, el ESQL que se muestra 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 produce si se omite la palabra clave ITEM, en que se genera una lista de campos (pares de nombre-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 elemento mismo.

Los dos ejemplos anteriores especificaban una lista como origen de la sentencia SELECT en la cláusula FROM (la referencia de campo tiene [] al final para indicar una matriz), por lo que normalmente la sentencia SELECT genera una lista de resultados. A causa de esto, tiene que especificar una lista como destino de la asignación (así pues, "Result[]" como destino de la asignación). Sin embargo, a menudo se sabe que la cláusula WHERE que se 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 quiere decir que el destino de la asignación se convierte en OutputRoot.XML.Test.Result ("[]" no está permitido). 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 escalares

Examine el siguiente ejemplo de mensaje de entrada:

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

Si codifica las siguientes sentencias ESQL 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>

Conceptos relacionados
Flujos de mensajes
ESQL
Diseño de mensajes

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Gestión de archivos ESQL

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Función SELECT
Sentencia SET
Mensaje de ejemplo