From: | Julio Rivero <jcrmlima(at)gmail(dot)com> |
---|---|
To: | Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar> |
Cc: | July Campos <jcampos(at)interactivedata(dot)com(dot)ve>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Ayuda urgente con transacciones |
Date: | 2006-02-07 21:05:16 |
Message-ID: | d34a12b60602071305q48bd4807ub2b962f6ca627a46@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Sorry, no revise bien el codigo, tiene razón, el Begin va sin ";" y siempre
tiene que cerrarse con un end;
el commit es automatico, si todo esta OK el postgres cierra la transacción,
de lo contrario le mandas el rollback;
On 2/7/06, Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar> wrote:
>
> Al DROP de la function deberías pasarle el parametro (integer) también.
> Por otro lado, no hay un end para el segundo begin:
>
> CREATE OR REPLACE FUNCTION PRUEBA_TRANSACCION(integer)
> RETURNS int4 AS
> $BODY$
> DECLARE
> BEGIN
> BEGIN --sin ;
>
> if ($1=1)then
> null;--select * from solpeda_prov;
> else
> ROLLBACK;
> END IF;
> COMMIT;
> end; --faltaba
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
> Saludos,
> Conrado
>
> -----Mensaje original-----
> *De:* July Campos [mailto:jcampos(at)interactivedata(dot)com(dot)ve]
> *Enviado el:* Martes, 07 de Febrero de 2006 05:45 p.m.
> *Para:* Conrado Blasetti; Julio Rivero
> *CC:* pgsql-es-ayuda(at)postgresql(dot)org
> *Asunto:* Re: [pgsql-es-ayuda] Ayuda urgente con transacciones
>
> EL BEGIN sin punto y coma indica sino me equivoco el comienzo de una
> funcion, y el BEGIN; indica el comienzo de una transaction. Igualmente ya
> habia realizado esa prueba de quitarle el punto y como a ese BEGIN y de
> todos modos me da el mismo error:"ERROR: syntax error at or near ";" en el
> carácter 34".
>
> ----- Original Message -----
> *From:* Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar>
> *To:* July Campos <jcampos(at)interactivedata(dot)com(dot)ve> ; Julio Rivero<jcrmlima(at)gmail(dot)com>
> *Cc:* pgsql-es-ayuda(at)postgresql(dot)org
> *Sent:* Tuesday, February 07, 2006 4:40 PM
> *Subject:* RE: [pgsql-es-ayuda] Ayuda urgente con transacciones
>
>
>
> Julio, el "BEGIN;" va sin ";".
> Saludos.
> Conrado
>
> -----Mensaje original-----
> *De:* July Campos [mailto:jcampos(at)interactivedata(dot)com(dot)ve]
> *Enviado el:* Martes, 07 de Febrero de 2006 05:35 p.m.
> *Para:* Julio Rivero
> *CC:* pgsql-es-ayuda(at)postgresql(dot)org
> *Asunto:* Re: [pgsql-es-ayuda] Ayuda urgente con transacciones
>
> Tengo entendido que el commit se utiliza para formalizar las operciones
> dentro del bloque transaccional. Ademas hice una prueba d lo que me
> acotaste, es decir, le quite el commit y la palabra transaction al rollback
> y me da el mismo error:"ERROR: syntax error at or near ";" en el carácter
> 35".
>
> ----- Original Message -----
> *From:* Julio Rivero <jcrmlima(at)gmail(dot)com>
> *To:* July Campos <jcampos(at)interactivedata(dot)com(dot)ve>
> *Cc:* pgsql-es-ayuda(at)postgresql(dot)org
> *Sent:* Tuesday, February 07, 2006 4:26 PM
> *Subject:* Re: [pgsql-es-ayuda] Ayuda urgente con transacciones
>
>
> Creo que no es necesario que hagas "commit"
>
> El rollback si no me equivoco va sin el "transaction", es decir: rollback;
>
>
> On 2/7/06, July Campos <jcampos(at)interactivedata(dot)com(dot)ve> wrote:
> >
> > Hola saludos a todos.
> >
> > Utilizo la version 8.1.2.
> >
> >
> >
> > Les tengo la siguiente pregunta: Como podría hacer para ejecutar una
> > transacción (transaction) dentro de una función? La función es esta:
> >
> >
> >
> > DROP FUNCTION PRUEBA_TRANSACCION;
> >
> > CREATE OR REPLACE FUNCTION PRUEBA_TRANSACCION(integer)
> >
> > RETURNS int4 AS
> >
> > $BODY$
> >
> >
> >
> > DECLARE
> >
> > BEGIN
> >
> > BEGIN;
> >
> >
> >
> > if ($1=1)then
> >
> > select * from solpeda_prov;
> >
> > else
> >
> > ROLLBACK TRANSACTION;
> >
> > END IF;
> >
> >
> >
> > COMMIT;
> >
> >
> >
> > END;
> >
> > $BODY$
> >
> > LANGUAGE 'plpgsql' VOLATILE;
> >
> > ALTER FUNCTION PRUEBA_TRANSACCION(integer) OWNER TO postgres;
> >
> >
> >
> > Esta función es solo una prueba que estoy haciendo para manejar una
> > transaction dentro de una funcion y me arroja el siguente error: "ERROR:
> > syntax error at or near ";" en el carácter 35".
> >
> >
> >
> > Tambien he intentado usar START TRANSACTION, y nada que me sirve. Trate
> > tambien de apagar el autocommit y dice que no es posible: "SET AUTOCOMMIT TO
> > OFF is no longer supported".
> >
> >
> >
> > Necesito envolver unos inserts en un bloque transaccional, que se
> > encuentran a su vez dentro de un ciclo de comprobaciones para ejecutar las
> > inserciones.
> >
> >
> >
> > Ademas de saber si se pueden usar transacciones dentro de funciones,
> > necesito saber si se pueden usar estas transacciones dentro de controles de
> > estructuras.
> >
> >
> >
> > Por favor si me pueden dar un ejemplo claro y preciso de cómo trabajar
> > una transaction dentro de una funcion se los agradeceria.
> >
> >
> >
> > Gracias de antemano.
> >
> >
> >
> >
> >
>
>
>
> --
>
> Saludos
> Att,
> Julio Rivero
> Movil: 98817321
>
>
--
Saludos
Att,
Julio Rivero
Movil: 98817321
From | Date | Subject | |
---|---|---|---|
Next Message | Lic. Martin Marques | 2006-02-07 21:19:16 | Re: Ayuda con fechas |
Previous Message | Martin Marques | 2006-02-07 20:55:59 | Re: Ayuda con fechas |