duda con función

From: Aarón Ribas Núñez <ribas_ibiza(at)hotmail(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: duda con función
Date: 2007-11-17 13:27:18
Message-ID: BAY108-W413B3D464DD0466778F01B827C0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Hola muy buenas! Tengo una pequeña duda con respecto a una función que estoy intentando implementar. Mi función en cuestión es la siguiente:

CREATE OR REPLACE
FUNCTION esborra()

RETURNS setof record

LANGUAGE 'plpgsql' AS'

DECLARE

aux record;

aux2 record;

BEGIN

SELECT INTO aux2 * from lliurament
ll inner join grup_lliura_ex gle on ll.id_lliurament = gle.id_lliuram and
ll.id_exer = gle.id_exer;

FOR aux IN SELECT id_grup,
ll.id_exer, MAX(nota_lliur) AS nota
FROM lliurament ll
INNER JOIN grup_lliura_ex gle ON ll.id_lliurament = gle.id_lliuram

AND ll.id_exer = gle.id_exer
GROUP BY ll.id_exer, id_grup
ORDER BY id_grup ASC LOOP

DELETE FROM lliurament WHERE
aux.nota != aux2.nota_lliur AND aux.id_grup = aux2.id_grup AND aux.id_exer =
aux2.id_exer;

RETURN NEXT aux;

END LOOP;

RETURN;

END;';
Como ven, estoy metiendo en 2 records, una serie de datos, y lo que quiero hacer con ellos, es ir comparando cada una de las filas de uno con las del otro, y si se cumple cierta condición(la del DELETE) pues que borre una fila de la tabla lliurament.Mi problema está en que cuando se produce el primer DELETE del bucle, el record aux no sigue iterando, es como si al borrar la fila de la tabla lliurament, no encontrase la siguiente fila de aux y entonces, sale del bucle.Una de las soluciones que he pensado es, hacer SELECT INTO aux .... y SELECT INTO aux2 ... fuera de los bucles, y luego iterar sobre aux y aux2, pero no sé si se puede, o al menos no sé como iterar sobre un record si no es de la manera que lo hago, debería ser algo como...

FOR aux LOOP
DELETE ....
EXIT WHEN ( condicion)
RETURN NEXT aux;
END LOOP;

esto existe?

Otra opción quizá sería hacer tablas intermedias, pero no lo he probado, ya que tampoco lo he hecho nunca.

Bueno, gracias de antemano.
Saludos!

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raúl Andrés Duque 2007-11-17 13:27:49 Re: Copias de seguridad de toda la base dedatosPostgres
Previous Message LIZETH ANGHELA SIRPA CACERES 2007-11-17 00:24:50 COMO SE EJECUTAN LOS PROCEDIMIENTOS ALMACENDOS?