Re: [Pgsql-ayuda] Que_me_esta_diciendo_este_mensaje_de_error?

From: Gladys Arias <gariaso(at)yahoo(dot)com>
To: Angel Vicente Perez <angel(dot)vicente(at)knipping(dot)es>, pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] Que_me_esta_diciendo_este_mensaje_de_error?
Date: 2003-04-04 15:20:17
Message-ID: 20030404152017.18182.qmail@web13113.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


De acuerdo a lo que dice el manual:http://www.postgresql.org/docs/view.php?version=7.3&idoc=1&file=plpgsql-structure.html

It is important not to confuse the use of BEGIN/END for grouping statements in PL/pgSQL with the database commands for transaction control. PL/pgSQL's BEGIN/END are only for grouping; they do not start or end a transaction. Functions and trigger procedures are always executed within a transaction established by an outer query --- they cannot start or commit transactions, since PostgreSQL does not have nested transactions.

No puedes realizar commit dentro de una función pl/pgsql, toda la función es considerada una transacción. Tendrías que hacer el commit fuera, después de la llamada a la función.

Saludos, Gladys.

Angel Vicente Perez <angel(dot)vicente(at)knipping(dot)es> wrote:
Hola tengo una funcion que cuando ejecuta me devuelve un mensaje de error,
del que he estado buscando referencias, y no he encontrado nada.
La funcion es :
DECLARE
Periodov INTEGER;
Familiav CHAR(2);
NewFecha DATE;
NewIntervalo interval;
Cadena varchar(10);
BEGIN
SELECT "Familia" INTO Familiav FROM "Instrumentos" WHERE "Codigo" =
$1;
SELECT * INTO Periodov FROM "GetPeriodoCal"(Familiav);
INSERT INTO "ResultadosH" ("Codigo", "Fecha", "Verificado",
"Resultado", "Desviacion", "Observaciones") VALUES ($1, $2, $3, $4, $5, $6);
Cadena := to_char(Periodov,''999'');
NewIntervalo := Cadena || ''months'';
NewFecha := $2 + NewIntervalo;
UPDATE "Instrumentos" SET "UltCalibracion" = $2, "ProxCalibracion" =
NewFecha;
COMMIT;
RETURN 1;
END

El lenguaje es plpgsql, y el mensaje de error es
ERROR: SPI_prepare() failed on "COMMIT". Evidentemente hay algo mal hecho.
Si quito el COMMIT, no tengo mensaje de error pero tampoco tengo escrituras.
Pareciera que no quiere o no puede hacer COMMIT, pero tampoco se porque.

_______________________________________________
Pgsql-ayuda mailing list
Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda

---------------------------------
Yahoo! Messenger
Nueva versi&oacute;n: Super Webcam, voz, caritas animadas, y m&aacute;s #161;Gratis!

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Eduardo Gauna 2003-04-04 17:36:20 [Pgsql-ayuda] Existe el uso de Sinónimos en PgSql ?
Previous Message Angel Vicente Perez 2003-04-04 13:51:49 [Pgsql-ayuda] ¿Que me esta diciendo este mensaje de error?