[firebase-br] Ref. Capturar erro ao rodar sentença SQL em SP

Sandro Souza escovadordebits em gmail.com
Sex Maio 29 15:34:26 -03 2009


Bom dia/tarde Omar.

Grande Omar, você criou essa exceção "unknow_BcoHor_CodFunc"?

Caso não tenha criado, deve criá-la pelo comando CREATE EXCEPTION.

Para segurar alguma exceção dentro de uma stored procedure, deve usar a
cláusula WHEN como você fez.

Veja o seguinte exemplo:

-- Criando uma nova exceção.
CREATE EXCEPTION TESTANDO;

-- Criando a stored procedure de teste.
SET TERM ^ ;

CREATE OR ALTER PROCEDURE TESTE AS
BEGIN
  -- Executa um comando SQL que pode gerar alguma exceção.
  DELETE FROM ....
  -- Se ocorrer qualquer exceção...
  WHEN ANY DO
    -- Gera outra exceção com a mensagem de erro.
    EXCEPTION TESTANDO 'Não foi possível excluir!';
END^

SET TERM ; ^

Na sintaxe de "WHEN SQLCODE <código-do-erro> DO", você tem que saber os
códigos de erro para cada situação.

Para o Firebird 1.5, você pode encontrar os códigos de erro nesse PDF:
http://www.firebirdsql.org/doc/contrib/fb_1_5_errorcodes.pdf

Para o Firebird 2.x, você pode encontrar os códigos de erro nesse PDF:
http://www.firebirdsql.org/doc/contrib/fb_2_0_errorcodes.pdf

Note que o erro -530 no Firebird 1.5 representa uma única situação de
violação de chave estrageira, enquando no Firebird 2.x representa 3
possíveis situações também relacionadas à chave estrangeira.

Sendo assim, se para você faz diferença o tipo de situação, então procure
utilizad o GDSCODE no lugar do SQLCODE, pois para cada situação existe
apenas um código específico para o GDSCODE, enquanto um código do SQLCODE
pode representar mais de uma situação.

Espero ter ajudado mais que atrapalhado. :D

2009/5/29 Omar Haddad <omarhaddadm em gmail.com>

> Boa tarde,
>
> Tem como eu capturar um código de erro ou saber se deu erro ao tentar rodar
> um SQL dentro de uma SP ?
>
> Abraço
>
> Tentei o código abaixo e não consegui gerar a Sp.
>
>
> --  when SQLCODE -530 do
> --  exception unknow_BcoHor_CodFunc;
>  end
>
>
> --
> Att.
> Omar Marques Haddad
> Analista de Sistemas Sênior
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista