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ón: Super Webcam, voz, caritas animadas, y más #161;Gratis!
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? |