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

Responder a