Acessando Várias Tabela de Banco de Dados

Você pode fazer referência a várias tabelas criadas no mesmo banco de dados. Utilize a cláusula FROM na instrução SELECT para unir os dados das duas tabelas.

O exemplo a seguir assume que você possui duas tabelas do banco de dados chamadas USERTABLE1 e USERTABLE2. As duas tabelas possuem colunas de tipos de dados char(6) (ou equivalentes).

USERTABLE1 contém duas linhas:

  Column1 Column2
Row 1 value1 value2
Row 2 value3 value4

USERTABLE2 contém duas linhas:

  Column3 Column4
Row 1 value5 value6
Row 2 value7 value8

Todas as tabelas referidas por uma única função SELECT devem estar no mesmo banco de dados. O banco de dados pode ser o padrão (especificado na propriedade "origem de dados" do nó) ou outro banco de dados (especificado na cláusula FROM da função SELECT).

Configure o nó Compute, Filter ou Database que está sendo utilizado para identificar o banco de dados no qual as tabelas foram definidas. Por exemplo, se você estiver utilizando o banco de dados padrão, clique com o botão direito do mouse no nó, selecione Abrir ESQL e codifique as seguintes instruções ESQL no módulo para este nó:

SET OutputRoot.XML.Test.Result[] =
         (SELECT A.Column1 AS FirstColumn,
                 A.Column2 AS SecondColumn,
                 B.Column3 AS ThirdColumn,
                 B.Column4 AS FourthColumn
            FROM Database.USERTABLE1 AS A,
                 Database.USERTABLE2 AS B
           WHERE A.Column1 = 'value1' AND
                 B.Column4 = 'value8'
         ); 

Isto resulta no seguinte conteúdo de mensagem de saída:

<Test>
   <Result>
        <FirstColumn>value1</FirstColumn>
        <SecondColumn>value2</SecondColumn>
        <ThirdColumn>value7</ThirdColumn>
        <FourthColumn>value8</FourthColumn>
   </Result>
</Test>

O exemplo acima mostra como acessar dados a partir de duas tabelas de bancos de dados. Você pode codificar cláusulas FROM mais complexas para acessar várias tabelas de banco de dados (embora todas as tabelas devam estar no mesmo banco de dados). Você também pode fazer referência a uma ou mais árvores de mensagens e pode utilizar SELECT para unir tabelas com tabelas, mensagens com mensagens ou tabelas com mensagens. Unindo Dados de Mensagens XML e Tabelas do Banco de Dados fornece um exemplo de como mesclar dados da mensagem com dados em uma tabela de banco de dados.

(definido pela propriedade origem de dados do nó).

Se você especificar uma função ou procedimento ESQL no identificador de coluna na cláusula WHERE, ele será processado como parte da consulta de banco de dados e não como ESQL.

Considere o seguinte exemplo:

  SET OutputRoot.XML.Test.Result =
          THE(SELECT ITEM T.Column1 FROM Database.USERTABLE1 AS T
          WHERE UPPER(T.Column2) = 'VALUE2');

Ele tenta retornar as linhas em que o valor de Column2 convertido em maiúscula é VALUE2. No entanto, apenas o gerenciador do banco de dados pode determinar o valor de T.Column2 para qualquer linha especificada e, portanto, ele não pode ser processado pelo ESQL antes da emissão da consulta do banco de dados, porque a cláusula WHERE determina as linhas que são retornadas ao fluxo de mensagens.

Portanto, o UPPER é transmitido ao gerenciador do banco de dados para ser incluído como parte de seu processamento. No entanto, se o gerenciador do banco de dados não puder processar o token na instrução select, será retornado um erro.

Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Visão Geral do ESQL
Modelagem de Mensagens
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL
Unindo Dados de Mensagens XML e Tabelas do Banco de Dados
Referências relacionadas
Nó Compute
Nó Database
Nó Filter
Referência de ESQL
Função SELECT
Instrução SET
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05830_