Como lidar com exceções de SQL

Ao tentar determinar a origem de um erro SQL e SQLSTATE indica uma condição de exceção, mantendo um valor diferente de 00000, 00001, ou 00002, você pode querer lidar com a situação em uma das seguintes maneiras:

  • Retornar o controle para o processo pai que chama o subprocedimento que gerou a exceção.

  • Use um SEMPRE QUE cláusula de ramificar para uma rotina de tratamento de exceção ou realizar alguma outra ação.

  • Tratar a exceção no local com uma composto instrução SQL. A instrução composta SQL consiste em uma ou mais instruções SQL simples, imprensadas entre INÍCIO e FIM palavras-chave.

O que se segue é um exemplo de um manipulador de exceção composto declaração:

BEGINDECLARE ValueOutOfRange EXCEÇÃO PARA SQLSTATE'73003 '-INSERT em alimentos (calorias) VALUES (: cal) -SIGNAL ValueOutOfRange -mensagem' Processo um novo calorias value.'EXCEPTIONWHEN ValueOutOfRange THENMESSAGE 'Manipulação o erro gama de calorias' -Quando OUTROS THENRESIGNAL -END

Com um ou mais DECLARAR declarações, você pode dar nomes aos específico SQLSTATE valores que você suspeita pode surgir. o INSERIR instrução é o que pode causar uma excepção a ocorrer. Se o valor de : cal ultrapassa o valor máximo para uma SMALLINT item de dados, SQLSTATE está configurado para # 147-73003 # 148-. o SINAL declaração sinaliza uma condição de exceção. Ela limpa a área de diagnóstico superior.

Ele define o RETURNED_SQLSTATE campo da área de diagnósticos ao SQLSTATE para a exceção nomeado. Se nenhum excepção tenha ocorrido, o conjunto de declarações representado pela MENSAGEM 'Processo um novo valor calórico' instrução é executada. No entanto, se ocorreu uma exceção, essa série de declarações é ignorada, eo EXCEÇÃO instrução é executada.

Se a excepção era um ValueOutOfRange excepção, em seguida, uma série de instruções representados pela MENSAGEM 'Manipulação o erro gama de calorias' instrução é executada. o RESIGNAL declaração é executada se a exceção não é um ValueOutOfRange exceção.

RESIGNAL apenas passa o controle da execução do procedimento pai chamando. Esse procedimento pode ter código de tratamento de erros adicional para lidar com outras do que o erro esperado valor-out-of-range exceções.

menu