Você pode passar a variável SQLSTATE dentro do tratamento da exceção para
outra função e testar o código de erro nessa função, exemplo:
CREATE OR REPLACE FUNCTION fun_teste()
RETURNS void AS
$BODY$BEGIN
PERFORM 1 / 0;
EXCEPTION
WHEN others THEN
PERFORM fun_tratar(SQLSTATE);
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
CREATE OR REPLACE FUNCTION fun_tratar(erro text)
RETURNS void AS
$BODY$BEGIN
CASE erro
WHEN '22012' THEN
RAISE NOTICE 'ocorreu divisão por zero';
END CASE;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
Aqui [1] tem a tabela listando os códigos de erro.
[1]
http://www.postgresql.org/docs/8.4/static/errcodes-appendix.html#ERRCODES-TABLE
2011/2/8 Eder Sousa <[email protected]>
> certo..
> Me expressei errado...
>
> referente a Função eu somente montei como exemplo.
>
> Oque eu preciso é.. como fazer para passar como parametro a Exception
> (Qualquer erro, chave duplicada, check, etc... qualquer coisa ) que
> ocorreu??
>
>
> ???
> Somente criar uma função na extrutura
>
> create or replace function x() returns text as
> $$
> begin
> EXCEPTION
> WHEN x THEN RAISE EXCEPTION mensagem1;
> WHEN y THEN RAISE EXCEPTION mensagem2
> end;
> end
> $$
> language plpgsql volatile;
>
>
> ________________________________
> Eder Sousa
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral