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

Manipulando Campos Repetidos em uma Árvore de Mensagens

Este tópico descreve a utilização da função SELECT e outras funções da coluna, para manipular campos repetidos em uma árvore de mensagens.

Suponha que você deseje executar uma ação especial em faturas que possuem um valor total de pedido maior que um valor específico. Para calcular o valor total do pedido de um campo Invoice, você deve multiplicar os campos Price pelos campos Quantity em todos os Items na mensagem e totalizar o resultado. Isto pode ser feito utilizando-se uma expressão SELECT, da seguinte forma:

(
 SELECT SUM( CAST(I.Price AS DECIMAL) * CAST(I.Quantity AS INTEGER) )
  FROM Body.Invoice.Purchases."Item"[] AS I
) 

O exemplo assume que é necessário utilizar expressões CAST para lançar os valores de cadeia dos campos Price e Quantity nos tipos de dados corretos. O lançamento do campo Price em um decimal produz um valor decimal com escala e precisão naturais, ou seja, qualquer escala e precisão são necessárias para representar o número. Estes CASTs não seriam necessários se os dados já estivessem em um tipo de dados apropriado.

A expressão SELECT funciona de forma semelhante ao predicado quantificado e funciona, na maioria das vezes, da mesma forma que uma SELECT funciona no SQL do banco de dados padrão. A cláusula FROM especifica o que está sendo iterado, neste caso, todos os campos Item no campo Fatura e estabelece que a instância atual de Item pode ser referida utilizando I. Este formato de SELECT envolve uma função de coluna, neste caso, a função SUM, portanto, SELECT é avaliada adicionando os resultados da avaliação da expressão dentro da função SUM para cada campo Item no campo Fatura. Como com o SQL padrão, os valores NULL são ignorados por funções de coluna, com a exceção da função de coluna COUNT explicada posteriormente nesta seção, e um valor NULL é retornado pela função de coluna apenas se não houver valores não NULL a combinar.

As outras funções de coluna fornecidas são MAX, MIN e COUNT. A função COUNT possui dois formatos que funcionam de maneira diferente com relação a NULLs. No primeiro formato, você o utiliza de forma muito semelhante à função SUM acima, por exemplo:

SELECT COUNT(I.Quantity)
  FROM Body.Invoice.Purchases."Item"[] AS I

Esta expressão retorna o número de campos Item para os quais o campo Quantidade é não-NULL. Ou seja, a função COUNT conta valores não-NULL da mesma forma que a função SUM adiciona valores não-NULL. A maneira alternativa de utilizar a função COUNT é a seguinte:

SELECT COUNT(*)
  FROM Body.Invoice.Purchases."Item"[] AS I

Utilizar COUNT(*) conta o número total de campos Item, independentemente de qualquer um dos campos ser NULL. De fato, o exemplo acima é equivalente a utilizar a função CARDINALITY, como em:

CARDINALITY(Body.Invoice.Purchases."Item"[])

Em todos os exemplos de SELECT fornecidos aqui, assim como no SQL padrão, você pode utilizar uma cláusula WHERE para fornecer filtragem nos campos.

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:30:01


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