Capturando o Estado do Banco de Dados

Se ocorrer um erro quando o intermediário acessar um banco de dados externo, você poderá deixar o intermediário emitir uma exceção durante o processamento do nó ou utilizar instruções ESQL para processar a exceção no próprio nó.

Deixar o intermediário emitir uma exceção durante o processamento do nó é o padrão; o processamento de ESQL no nó atual é abandonado. Em seguida, a exceção é propagada para trás através do fluxo de mensagens até alcançar um nó de captura ou o nó input desse fluxo de mensagens. Se a exceção alcançar o nó input, todas as transações serão revertidas.

A utilização de instruções ESQL para processar a exceção no próprio nó requer um entendimento de códigos de retorno do banco de dados e um curso lógico de ação a ser executada quando ocorrer um erro. Para ativar este processamento de erro do banco de dados seqüencial, é necessário limpar a propriedade Emitir Exceção em Erro do Banco de Dados do nó Filter, Banco de Dados ou Compute. Se você desmarcar esta propriedade, o nó configurará os indicadores de estado do banco de dados SQLCODE, SQLSTATE, SQLNATIVEERROR e SQLERRORTEXT com informações apropriadas do gerenciador de banco de dados em vez de emitir uma exceção.

Os indicadores contêm informações somente quando ocorre um erro (não um aviso), a menos que você tenha selecionado a propriedade Tratar Avisos como Erros. No caso de êxito em operações de banco de dados de informações, os indicadores contêm seus valores padrão de êxito.

Você pode utilizar os valores contidos nesses indicadores em instruções ESQL para tomar decisões sobre a ação a ser tomada. É possível acessar esses indicadores com as funções SQLCODE, SQLSTATE, SQLNATIVEERROR e SQLERRORTEXT.

Se estiver tentando o processamento de erro sequencial, verifique os indicadores de estado após a execução de cada instrução do banco de dados para assegurar que tenha capturado e avaliado todos os erros. Ao processar os indicadores, se encontrar um erro que não possa ser manipulado de forma sequencial, será possível gerar uma nova exceção para lidar com ele enviando dados em um nó de captura, ou deixá-lo passar pelo nó de entrada para que a transação seja recuperada, para a qual é possível utilizar a instrução ESQL THROW.

Você pode verificar o caso especial em que o SELECT não retorna nenhum dado. Esta situação não é considerada um erro e SQLCODE não é configurado, portanto, é necessário fazer o teste explicitamente; consulte Verificando Retornos para SELECT.

Utilizando ESQL para Acessar Indicadores de Estado do Banco de Dados

O exemplo de ESQL a seguir mostra como utilizar as quatro funções de estado do banco de dados e como incluir as informações de erro retornadas em uma exceção:

DECLARE SQLState1 CHARACTER;
DECLARE SQLErrorText1 CHARACTER;
DECLARE SQLCode1 INTEGER;
DECLARE SQLNativeError1 INTEGER;
  
-- Faça uma inserção no banco de dados em uma tabela que não exista --
INSERT INTO Database.DB2ADMIN.NONEXISTENTTABLE (KEY,QMGR,QNAME)
                                                            VALUES (45,'REG356','my TESTING 2');

--Recupere os códigos de retorno do banco de dados --
SET SQLState1 = SQLSTATE;
SET SQLCode1 = SQLCODE;
SET SQLErrorText1 = SQLERRORTEXT;
SET SQLNativeError1 = SQLNATIVEERROR;

--Use a instrução THROW para recuperar o banco de dados e emitir uma exceção de usuário--
THROW USER EXCEPTION MESSAGE 2950 VALUES
( 'The SQL State' , SQLState1 , SQLCode1 , SQLNativeError1 ,
SQLErrorText1 );

Você não precisa emitir uma exceção quando detectar um erro do banco de dados; talvez prefira salvar as informações de erro retornadas na árvore LocalEnvironment e incluir um nó Filter em seu fluxo de mensagens que roteia a mensagem para subfluxos de erro ou de êxito, de acordo com os valores salvos.

O programa de amostra a seguir fornece outro exemplo de ESQL que utiliza estas funções do banco de dados: Você pode visualizar amostras apenas quando utilizar o centro de informações integrado ao Message Brokers Toolkit.
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Estrutura em Árvore da Lista de Exceções
Visão Geral do ESQL
Modelagem de Mensagens
Codificando o ESQL para Tratar Erros
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Tratando Erros em Fluxos de Mensagens
Gerenciando Arquivos ESQL
Verificando Retornos para SELECT
Referências relacionadas
Nó Compute
Nó Banco de Dados
Nó Filter
Referência de ESQL
Funções de Estado de Banco de Dados ESQL
Instrução DECLARE
Instrução DECLARE HANDLER
Instrução INSERT
Instrução SET
Instrução THROW
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:12:47

ak05840_