WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Enlace de datos de mensajes y tablas de base de datos

Puede utilizar funciones SELECT que interactúan con datos de mensajes y bases de datos.

También puede anidar una función SELECT que interactúe con un tipo de datos en una cláusula SELECT que interactúe con el otro tipo.

Considere el siguiente mensaje de entrada que contiene información de facturas para dos clientes:

<Data>
  <Invoice>
    <CustomerNumber>1234</CustomerNumber>
    <Item>
      <PartNumber>1</PartNumber>
      <Quantity>9876</Quantity>
    </Item>
    <Item>
      <PartNumber>2</PartNumber>
      <Quantity>8765</Quantity>
    </Item>
</Invoice>
  <Invoice>
    <CustomerNumber>2345</CustomerNumber>
    <Item>
      <PartNumber>2</PartNumber>
      <Quantity>7654</Quantity>
    </Item>
    <Item>
      <PartNumber>1</PartNumber>
    <Quantity>6543</Quantity>
    </Item>
</Invoice>
</Data>

Examine las siguientes tablas de base de datos, Prices y Addresses, y su contenido:

PARTNO      PRICE                   
----------- ------------------------
          1            +2.50000E+001
          2            +6.50000E+00



PARTNO      STREET                CITY             COUNTRY  
------      -------------------   --------------   ------- 
1234        22 Railway Cuttings   East Cheam       England
2345        The Warren            Watership Down   England

Si codifica la siguiente transformación ESQL:

-- Crear un mensaje de salida válido
SET OutputRoot.MQMD = InputRoot.MQMD; 

-- Seleccionar facturas adecuadas
SET OutputRoot.XMLNS.Data.Statement[] =
   (SELECT I.CustomerNumber                  AS Customer.Number,
           A.Street                                 AS Customer.Street,
           A.City                                   AS Customer.Town,
           A.Country                                AS Customer.Country,

        -- Seleccionar elementos adecuados
          (SELECT II.PartNumber AS PartNumber,
                  II.Quantity   AS Quantity,
                  PI.Price      AS Price
           FROM Database.db2admin.Prices AS PI,
               I.Item[]                 AS II
           WHERE II.PartNumber = PI.PartNo     )    AS Purchases.Item[]
      
    FROM Database.db2admin.Addresses  AS A,
         InputRoot.XMLNS.Data.Invoice[] AS I
           
    WHERE I.CustomerNumber = A.PartNo
    );

se genera el siguiente mensaje de salida. El mensaje de entrada se aumenta con la información de precio y dirección de la tabla de base de datos.

<Data>
  <Statement>
    <Customer>
      <Number>1234</Number>
      <Street>22 Railway Cuttings</Street>
      <Town>East Cheam</Town>
      <Country>England</Country>
    </Customer>
    <Purchases>
      <Item>
        <PartNumber>1</PartNumber>
        <Quantity>9876</Quantity>
        <Price>2.5E+1</Price>
      </Item>
      <Item>
        <PartNumber>2</PartNumber>
        <Quantity>8765</Quantity>
        <Price>6.5E+1</Price>
      </Item>
    </Purchases>
  </Statement>
  <Statement>
    <Customer>
      <Number>2345</Number>
      <Street>The Warren</Street>
      <Town>Watership Down</Town>
      <Country>England</Country>
    </Customer>
    <Purchases>
      <Item>
        <PartNumber>1</PartNumber>
        <Quantity>6543</Quantity>
        <Price>2.5E+1</Price></Item>
      <Item>
        <PartNumber>2</PartNumber>
        <Quantity>7654</Quantity>
        <Price>6.5E+1</Price>
      </Item>
    </Purchases>
  </Statement>
</Data>

Puede anidar la cláusula SELECT de base de datos en la cláusula SELECT de mensaje. En la mayoría de los casos, el código no es tan eficaz como en el ejemplo anterior, pero es posible que considere que es mejor que los mensajes sean pequeños y las tablas de base de datos grandes.

-- Crear un mensaje de salida válido
SET OutputRoot.MQMD = InputRoot.MQMD; 

-- Seleccionar facturas adecuadas
SET OutputRoot.XMLNS.Data.Statement[] =
    (SELECT I.CustomerNumber                  AS Customer.Number,

        -- Buscar la dirección
        THE ( SELECT 
                  A Street,
                  A.City    AS Town,
                  A.Country
                FROM Database.db2admin.Addresses AS A
                WHERE A.PartNo = I.CustomerNumber
            )                             AS Customer,

        -- Seleccionar elementos adecuados
        (SELECT 
            II.PartNumber AS PartNumber,
            II.Quantity   AS Quantity,

            -- Buscar el precio
            THE (SELECT ITEM P.Price
              FROM Database.db2admin.Prices AS P
              WHERE P.PartNo = II.PartNumber
            )             AS Price               

          FROM I.Item[] AS II           ) AS Purchases.Item[]
      
    FROM InputRoot.XMLNS.Data.Invoice[] AS I
    );
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:59:59


Tema de tareaTema de tarea | Versión 8.0.0.5 | ak05780_