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
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
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 |