WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Unindo Dados em uma Mensagem

A cláusula FROM de uma função SELECT não é restrita para ter um item. Especificar vários itens na cláusula FROM produz o efeito de junção do produto Cartesiano típico, no qual o resultado inclui um item para todas as combinações de itens nas duas listas.

Utilizar a cláusula FROM desta maneira produz o mesmo efeito de junção do SQL padrão.

A mensagem Invoice inclui um conjunto de detalhes do cliente, detalhes de pagamento e detalhes das compras feitas pelo cliente. Codifique o seguinte ESQL para processar a entrada Mensagem de Exemplo:

SET OutputRoot.XMLNS.Items.Item[] = 
   (SELECT D.LastName, D.Billing,
           P.UnitPrice, P.Quantity 
    FROM InputBody.Invoice.Customer[] AS D,
         InputBody.Invoice.Purchases.Item[] AS P);

A seguinte mensagem de saída é gerada:

<Items>
 <Item>
  <LastName>Smith</LastName>
  <Billing>
   <Address>14 High Street</Address>
   <Address>Hursley Village</Address>
   <Address>Hampshire</Address>
   <PostCode>SO213JR</PostCode>
  </Billing>
  <UnitPrice>27.95</UnitPrice>
  <Quantity>2</Quantity>
 </Item>
 <Item>
  <LastName>Smith</LastName>
  <Billing>
   <Address>14 High Street</Address>
   <Address>Hursley Village</Address>
   <Address>Hampshire</Address>
   <PostCode>SO213JR</PostCode>
  </Billing>
  <UnitPrice>42.95</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
 <Item>
  <LastName>Smith</LastName>
  <Billing>
   <Address>14 High Street</Address>
   <Address>Hursley Village</Address>
   <Address>Hampshire</Address>
   <PostCode>SO213JR</PostCode>
  </Billing>
  <UnitPrice>59.99</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</Items>

Os resultados são produzidos, fornecendo o número de descrição na primeira linha (um) multiplicada pelo número de preços na segunda (três). Os resultados funcionam sistematicamente em todas as combinações das duas listas. Você pode ver isto consultando os campos LastName e UnitPrice selecionados a partir de cada resultado:

LastName Smith   UnitPrice 27.95
LastName Smith   UnitPrice 42.95
LastName Smith   UnitPrice 59.99

Você pode unir dados que ocorrem em uma lista e não-lista ou em duas não-listas e assim por diante. Por exemplo:

OutputRoot.XMLNS.Test.Result1[] =
  (SELECT ... FROM InputBody.Test.A[], InputBody.Test.b);
OutputRoot.XMLNS.Test.Result1 =
  (SELECT ... FROM InputBody.Test.A, InputBody.Test.b);

O local de [] em cada caso é significativo. Qualquer número de itens pode ser especificado na cláusula FROM, não apenas um ou dois. Se qualquer um dos itens especificar [] para indicar uma lista de itens, a função SELECT retornará uma lista de resultados (a lista poderá conter apenas um item, mas a função SELECT poderá retornar uma lista de itens).

O destino da designação deve especificar uma lista (portanto, deve finalizar em []) ou você deve utilizar Função THE se souber que a cláusula WHERE garante que apenas uma combinação é correspondida.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:29:59


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ak05820_