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.