[firebase-br] Exception

Gladiston Santana gladiston em vidy.com.br
Qui Jul 31 16:22:03 -03 2014


Ricardo, em blocos de codigo basta fazer o que eu disse e acrescentar o
when any:
create procedure sp_teste (
    A smallint,
    B smallint )
RETURNS (
    C smallint )
AS
begin
  -- a=smallint, b=smallint, c=(a+b) mas tambem smallint, se o resultado
  -- for maior que >32768 dará erro porque c não está capacitado para
armazenar
  -- este tipode resultado
  -- Crie uma exception generica antes de executar essa procedure:
  -- CREATE OR ALTER EXCEPTION ERR 'Erro generico';
  c=(a+b);

  -- retorna o resultado apenas se não houver erro
  suspend;

  -- O bloco abaixo só será executado se houver algum erro em toda a
procedure.
  when any do
  begin
    if (sqlstate='22003') then exception err 'Resultado fora dos limites
comportados!!!' ;
  end
end


Apenas para você entender, execute :
select * from sp_teste(32767,1);
E o when any vai entrar em ação.

Apenas um dado curioso, uns 2 anos atrás em ambientes de testes, o IBExpert
interceptava as exceptions antes de chegar ao when...any, até eu perceber
que não era problema do Firebird levou tempo, não sei se o IbExpert ainda
tá assim, mas teste no FlameRobin(eu uso este na maior parte das vezes) se
tiver problemas.

.



Em 31 de julho de 2014 13:26, Ricardo Rodrigues <ricardopd em gmail.com>
escreveu:

> Boa tarde Gladiston, tem como você colocar este comando nessa trigguer que
> enviei pra mim ver como ficaria.
>
>
> Em 31 de julho de 2014 10:42, Gladiston Santana <gladiston em vidy.com.br>
> escreveu:
>
> > Não tem segredo, é apenas um bloco que se coloca no corpo de seu psql
> > (procedure, trigger) que só será executando quando ocorrer uma exception.
> > Na primeira vez todo mundo acha que é um tipo try...except que precisa
> > englobar os possiveis comandos que falharão, mas na verdade ele é o
> > equivalente ao 'on error gosub' do basic, é apenas um when any para sua
> > psql inteira.
> >
> > Um exemplo aqui:
> > http://www.firebirdsql.org/refdocs/langrefupd25-sqlstate.html
> >
> >
> > Em 31 de julho de 2014 10:27, Ricardo Rodrigues <ricardopd em gmail.com>
> > escreveu:
> >
> > > Não tem mesmo, gostaria se possivel alguem inlcuisse para que eu possa
> > ver
> > > como funciona
> > >
> > >
> > ______________________________________________
> > 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
> >
> ______________________________________________
> 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
>



-- 
--
B em B@BU     iB em M@B.  B em MBBO   MBBMMB em B@BZLr    E@@@@i      r@@@BU
vB em M@O     E em B@Bu   BBBM em 0   G em MMM@N8MBB em ZP5r  B em B@k      8B@@O
 OB em B@q   2 em BBBM    B em B@BO   BB em B@B,.:,7B em B@@L uB em B@,    OB em B@.
 ,@@@B@   @BBB@,    @BBB em 8   M em M@@@     PB em B@B  @@@BN   iB em B@L
  U em B@B2 LB em B@X     B em MBBO   MBBM em B     i em BBB@. 7 em B@Bi  B em B@E
   B@@@BiM em M@B.     @BBM em G   M em MMB@     v@@M em B,  G em B@Z v em B@B.
   7B em B@O em B@B5      B em B@B8   BBBM em B     Z@@@B@   iB@@@2 em B@Br
    NB em M@B em B8       @B em B@8   M em B@B em i:i75 em B@B em r    E@@B em B@Bq
    . em B@@@B@:       B em B@B@   @B@@@B em B@B@@@ME;     .BB em MBB@
     55.ANOS        OMOGBS   PBZGGOOMOO117,        7 em BBB@r
     ==============================================r@@@@F=====
     Gladiston Santana                             8 em B@B,
     Supervisor de TI                             G em B@B7
     Tel.:+551147873122 R:228                    :@B em B0
     Grupo VIDY - SGQ ISO9001 - 55 ANOS          @B em B@.
     Visite nosso site: www·vidy·com·br         BB@@@u
     Visite também : www·expolabor·com·br      GB em B@N



Mais detalhes sobre a lista de discussão lista