[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