Re: Duda manejo errores en plpgsql

From: "Agustin Casiva" <casivaagustin(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Duda manejo errores en plpgsql
Date: 2007-01-25 11:13:20
Message-ID: 646eb5870701250313m1ad233c9j761e4dcb3fa3eb5e@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mirá aca tenes un ejemplo.

CREATE TABLE db (a INT PRIMARY KEY, b TEXT);

CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
$$
BEGIN
LOOP
UPDATE db SET b = data WHERE a = key;
IF found THEN
RETURN;
END IF;

BEGIN
INSERT INTO db(a,b) VALUES (key, data);
RETURN;
EXCEPTION WHEN unique_violation THEN
UPDATE ....
END;
END LOOP;
END;
$$
LANGUAGE plpgsql;

Mas info en la documentación

http://www.postgresql.org/docs/8.2/interactive/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING

Aca tenes una tabla con las posibles excepciones

http://www.postgresql.org/docs/8.2/interactive/errcodes-appendix.html#ERRCODES-TABLE

Saludos

On 1/25/07, Raúl Andrés Duque <raulandresduque(at)hotmail(dot)com> wrote:
>
> Cordial Saludo.
>
> Quiero hacer una acción dependiendo de si se generó o no un error en una
> sentencia (dentro de una función pl/pgsql) ... cómo hacerlo??
>
> Por ejemplo:
>
> IF "insert falla"
> "haga update"
> ENDIF
>
> Atentamente,
>
> RAUL DUQUE
> Bogotá, Colombia
>
> ----- Original Message -----
> From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
> To: "Jaime Casanova" <systemguards(at)gmail(dot)com>;
> <randrade(at)inteligentes(dot)com(dot)mx>; "GABRIEL COLINA" <colina_movil(at)yahoo(dot)com>;
> "gbas gbas" <gbas13(at)gmail(dot)com>; <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Wednesday, January 24, 2007 10:52 PM
> Subject: Re: [pgsql-es-ayuda] Pgplsql extraño
>
>
> > Alvaro Herrera escribió:
> >> Jaime Casanova escribió:
> >>
> >> > Alguno de ustedes reviso la solución de Alvaro? se la ve
> >> > interesante... no la entendi a decir verdad pero hoy no me duermo
> >> > hasta entenderla...
> >>
> >> Pero como, si es muy simple :-) Lo unico que hace es crear una funcion
> >> tal que dados dos textos no nulos, entrega un texto que es la
> >> concatenacion de los dos separados por una coma. Si uno de ellos es
> >> nulo, entonces entrega el otro sin ninguna coma. Es decir
> >>
> >> concat_comma('foo', 'bar') -> 'foo, bar'
> >> concat_comma(null, 'baz') -> 'baz'
> >
> > Me acabo de dar cuenta que hay un problema; la funcion debe ser
> > declarada CALLED ON NULL INPUT para que esto funcione.
> >
> > --
> > Alvaro Herrera
> > http://www.CommandPrompt.com/
> > PostgreSQL Replication, Consulting, Custom Development, 24x7 support
> >
> > ---------------------------(fin del mensaje)---------------------------
> > TIP 3: si publicas/lees desde Usenet, por favor envía "subscribe-nomail"
> > a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> > a los suscriptores de la lista
> >
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>

--
Agustin Casiva - Desarrollador de Sistemas

www.casivaagustin.com.ar
casivaagustin(at)gmail(dot)com
casivaagustin(at)tuquito(dot)org(dot)ar

http://www.osis.com.ar
http://www.tuquito.org.ar

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fredy Ruiz - Proyectos Informaticos - Facultad de Odontologia - Universidad de Valparaiso - Chile 2007-01-25 12:01:17 Re: Problemas al conectar postgresql
Previous Message redhada redhada 2007-01-25 10:37:22 Rv: restore