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

Função SQLSTATE

SQLSTATE é uma função de estado do banco de dados que retorna um tipo de dados CHARACTER de 5 caracteres com um valor padrão de '00000' (cinco zeros em uma cadeia).

Sintaxe

Ler diagrama de sintaxeManter visual do diagrama de sintaxe
>>-SQLSTATE----------------------------------------------------><

Dentro de um fluxo de mensagens, você poderá acessar e atualizar um recurso de banco de dados externo utilizando as funções do banco de dados ESQL disponíveis nos nós Compute, Banco de Dados e Filter. Ao efetuar chamadas para um banco de dados externo, você poderá obter erros, como uma tabela não existe, um banco de dados não está disponível ou uma inserção de uma chave que já existe.

Quando ocorrerem estes erros, a ação padrão do broker será gerar uma exceção. Esse comportamento é determinado de acordo com a definição da propriedade Emitir exceção em caso de erro do banco de dados. Se você selecionar esta propriedade, o broker parará o processamento o nó, propagará a mensagem para o terminal de falha do nó e gravará os detalhes do erro para a ExceptionList. Se você desejar substituir o comportamento padrão e manipular um erro do banco de dados no ESQL no nó, desmarque Emitir Exceção no Erro do Banco de Dados. O broker não emite uma exceção e será necessário incluir a instrução THROW para emitir uma exceção caso um determinado código de estado SQL não seja esperado. Consulte Instrução THROW para obter uma descrição de THROW.

Para tratar os erros de banco de dados em um nó, você poderá utilizar a função de estado do banco de dados SQLSTATE para receber informações sobre o da chamada DBMS feita em ESQL. Você poderá incluí-la em instruções condicionais no ESQL do nó atual para que ele reconheça e lide com possíveis erros.

Estados de SQL

Em ESQL, os estados de SQL são cadeias de caracteres de comprimento variável. Por convenção, eles são compostos de seis caracteres, somente de 0 a 9 e de A a Z. O significado dos seis caracteres é:
Caractere 1
A origem da exceção
Caracteres 2 - 3
A classe da exceção
Caracteres 4 - 6
A subclasse da exceção

O estado SQL de uma expressão é determinado por um processo de dois estágios. No primeiro estágio, as informações da exceção são examinadas e quaisquer exceções de agrupamento (ou seja, informações que dizem o que o broker estava fazendo no momento em que a exceção ocorreu) são suportadas até que a exceção que descreve o erro original seja localizada.

O segundo estágio é o seguinte:
  1. Se a exceção selecionada for uma exceção de banco de dados, o estado SQL será aquele fornecido pelo banco de dados, mas prefixado pela letra "D" para evitar qualquer confusão com exceções que surgirem no broker. O código SQL, erro nativo e texto do erro são aqueles fornecidos pelo banco de dados.
  2. Se a exceção selecionada for uma exceção do usuário (ou seja, originada em uma instrução THROW), o código SQL, estado, erro nativo e texto do erro serão extraídos, em ordem, das quatro primeiras inserções da exceção. O valor do estado resultante é extraído no estado em que se encontra (não prefixado por uma letra como "U"). A letra "U" não é utilizada pelo broker como um indicador de origem. Se você desejar definir um estado de SQL exclusivo em vez de imitar um existente, utilize estados de SQL que começam com a letra "U". Se você utilizar estados SQL que começam com a letra "U", poderá gravar um manipulador de erro para corresponder todas as exceções definidas pelo usuário e emitidas com um operador LIKE'U%'.
  3. Se a exceção selecionada se originou no transporte da mensagem ou na própria implementação ESQL, o código SQL, o estado, o erro nativo e o texto do erro serão conforme descrito posteriormente na lista nesta seção.
  4. Para todas as outras exceções, o estado SQL é '', indicando sem origem, sem classe e sem subclasse.

Algumas exceções que fornecem atualmente um estado SQL vazio podem fornecer estados individuais em releases futuros. Se deseja capturar exceções não classificadas, utilize o curinga "todos" ("%") para o estado SQL no último manipulador de um escopo. Este curinga continuará capturando o mesmo conjunto de exceções se exceções não classificadas anteriormente receberem novos estados de SQL exclusivos.

Os seguintes estados SQL são definidos:

Dddddd
ddddd é o estado retornado pelo banco de dados.
SqlState = 'S22003'
Estouro aritmético. Uma operação cujo resultado é um tipo numérico que resultou em um valor acima do intervalo suportado.
SqlState = 'S22007'
O formato data/hora não é válido. Uma cadeia de caracteres utilizada em uma conversão de caractere para um tipo de data/hora tinha o formato básico errado (por exemplo, '01947-10-24') ou tinha valores fora dos intervalos permitidos pelo calendário Gregoriano (por exemplo, '1947-21-24').
SqlState = 'S22008'
Estouro do campo de data e hora. Uma operação cujo resultado é um tipo de data/hora resultou em um valor além do intervalo suportado.
SqlState = 'S22012'
Divisão por zero. Uma operação de divisão cujo tipo de dados do resultado não possui conceito de infinidade obteve um operando zero à direita.
SqlState = 'S22015'
Estouro de campo de intervalo. Uma operação cujo resultado é do tipo INTERVAL resultou em um valor acima do intervalo suportado pelo tipo de dados INTERVAL.
SqlState = 'S22018'
O valor do caractere designado não é válido.
SqlState = 'SFN001'
Uma função SELECT utilizada em um predicado IN retornou mais de uma coluna quando apenas uma coluna é permitida nesse caso.
SqlState = 'SPS001'
O terminal de destino não é válido. Um PROPAGATE para a instrução de terminal tentou utilizar um nome de terminal inválido.
SqlState = 'SPS002'
O rótulo de destino não é válido. Um PROPAGATE para a instrução de rótulo tentou utilizar um rótulo inválido.
SqlState = 'SPS003'
A instrução PROPAGATE não é válida nesse contexto. Em vez disso, use a função RETURN.
SqlState = 'MQW001', SqlNativeError = 0
O fluxo de bits não atende os requisitos para as mensagens de WebSphere MQ. Nenhuma tentativa foi feita para colocá-lo em uma fila. Tentar novamente e a administração da fila não resolvem este problema.
SqlState = 'MQW002', SqlNativeError = 0
Os nomes de fila de destino ou de gerenciador de filas não eram válidos (ou seja, eles não puderam ser convertidos de Unicode para a página de códigos do gerenciador de filas). Tentar novamente e o esvaziamento de fila não resolve este problema.
SqlState = 'MQW003', SqlNativeError = 0
O modo de pedido foi especificado mas os nomes da fila "reply to" ou do gerenciador de filas não eram válidos (ou seja, não puderam ser convertidos de Unicode para a página de códigos da mensagem). Tentar novamente e o esvaziamento de fila não resolve este problema.
SqlState = 'MQW004', SqlNativeError = 0
O modo de resposta foi especificado mas os nomes da fila ou do gerenciador de filas obtidos da mensagem não eram válidos (ou seja, eles não puderam ser convertidos da página de códigos fornecida para Unicode). Tentar novamente e o esvaziamento de fila não resolve este problema.
SqlState = 'MQW005', SqlNativeError = 0
O modo de lista de destino foi especificado, mas a lista de destino fornecida não atende aos requisitos básicos de listas de destino. Nenhuma tentativa foi feita para colocar a mensagem em uma fila. Tentar novamente e a administração da fila não resolvem este problema.
SqlState = 'MQW101', SqlNativeError = returned by WebSphere MQ
Não foi possível abrir a fila ou o gerenciador de filas de destino. A administração da fila pode resolver este problema mas tentar novamente não.
SqlState = 'MQW102', SqlNativeError = returned by WebSphere MQ
Não foi possível gravar na fila ou no gerenciador de filas destino. Tentar novamente e a administração de fila podem resolver este problema.
SqlState = 'MQW201', SqlNativeError = número de destinos com um erro
Ocorreu mais de um erro ao processar uma lista de destino. A mensagem pode ter sido colocada em zero ou mais filas. Tentar novamente e a administração de fila podem resolver este problema.
Qualquer coisa que o usuário tenha utilizado em uma instrução THROW
Utilize Uuuuuuu para as exceções do usuário, a menos que esteja imitando uma das exceções definidas acima.
Cadeia vazia
Todos os outros erros.
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:00


Tópico de ReferênciaTópico de Referência | Versão 8.0.0.5 | ak17990_