mensagem em Stored Procedure

View: New views
2 Messages — Rating Filter:   Alert me  

mensagem em Stored Procedure

by serginho_pv :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Criei a procedure abaixo, mas gostaria que ela enviasse um aviso caso houvesse algum problema, como por ex, violação de chave, campo null, etc.. Estou utilizando PostgreSQL 8.4 for windows

CREATE OR REPLACE FUNCTION sp_ins_idioma (varchar,varchar)
RETURNS void
AS
$$
DECLARE
p_cod_idioma ALIAS FOR $1;
p_idioma ALIAS FOR $2;
BEGIN
INSERT INTO idioma (cod_idioma, idioma) VALUES (p_cod_idioma, p_idioma);
END;
$$
LANGUAGE 'plpgsql';

Re: mensagem em Stored Procedure

by robertomello :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, Oct 30, 2009 at 9:04 AM, serginho_pv <serginho_pv@...> wrote:
>
> Criei a procedure abaixo, mas gostaria que ela enviasse um aviso caso
>
> CREATE OR REPLACE FUNCTION sp_ins_idioma (varchar,varchar)

Ao invés de usar DECLARE só para aliases, podes fazer o seguinte:

CREATE OR REPLACE FUNCTION sp_ins_idioma (p_cod_idioma varchar,
p_idioma varchar)

> houvesse algum problema, como por ex, violação de chave, campo null, etc..
> Estou utilizando PostgreSQL 8.4 for windows

Use controle de exceções e o RAISE:

http://www.postgresql.org/docs/8.4/interactive/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING
http://www.postgresql.org/docs/8.4/interactive/plpgsql-errors-and-messages.html

Note que se o seu INSERT tentar, por exemplo, inserir um valor NULL
num campo NOT NULL, o PG não vai deixar e vai abortar a transação da
função, lançando o erro para o cliente. O controle de exceções e raise
te deixam controlar melhor a mensagem que é lançada par algo mais
significativo para sua aplicação, mas seria um erro tentar duplicar o
sistema de erros do PG.

Roberto
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral