Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/11/2009, 17:14
Avatar de xdrtas
xdrtas
 
Fecha de Ingreso: junio-2008
Ubicación: Venezuela
Mensajes: 97
Antigüedad: 15 años, 10 meses
Puntos: 13
Respuesta: LIMIT en función plpgsql

Hola rProgged, puedes usar un bloque IF para discernir si usar el LIMIT o no en la consulta, te pongo un ejemplo de tu código modificado:

Código:
CREATE OR REPLACE FUNCTION funcionprueba(integer, integer, integer) RETURNS SETOF RECORD AS $$
DECLARE 
   id_area ALIAS FOR $1;
   inicio ALIAS FOR $2;
   fin ALIAS FOR $3;
   datos RECORD;
BEGIN
	IF(inicio = null and fin = null) THEN
		FOR datos IN
			SELECT nombre, visitas
			FROM tabla
			WHERE id=id_area
		LOOP
			RETURN NEXT datos;
		END LOOP;
	ELSE
		FOR datos IN
			SELECT nombre, visitas
			FROM tabla
			WHERE id=id_area LIMIT inicio OFFSET final
		LOOP
			RETURN NEXT datos;
		END LOOP;
	END IF;
	   RETURN;
END;
$$ LANGUAGE plpgsql VOLATILE;
Para llamar la consulta sin el LIMIT lo haces así:
Código:
select * from funcionprueba(1,null,null) as (nombre varchar, visitas integer);
Para llamar a la consulta con el LIMIT:
Código:
select * from funcionprueba(1,10,0) as (nombre varchar, visitas integer);
Espero que te sirva.

Última edición por xdrtas; 16/11/2009 a las 17:16 Razón: Error en el código!