RE: Ayuda urgente con transacciones

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
Subject: RE: Ayuda urgente con transacciones
Date: 2006-02-07 20:53:40
Message-ID: 65746BCC3D99E44998976FD845AD6E6E10D4ACE4@MAIL
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <mailto:conrado(at)mapfre(dot)com(dot)ar> Blasetti
To: July Campos <mailto:jcampos(at)interactivedata(dot)com(dot)ve> ; Julio Rivero
<mailto:jcrmlima(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org <mailto: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 <mailto: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 <mailto:jcrmlima(at)gmail(dot)com> Rivero
To: July Campos <mailto:jcampos(at)interactivedata(dot)com(dot)ve>
Cc: pgsql-es-ayuda(at)postgresql(dot)org <mailto: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
<mailto: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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martin Marques 2006-02-07 20:55:59 Re: Ayuda con fechas
Previous Message July Campos 2006-02-07 20:45:15 Re: Ayuda urgente con transacciones