Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Escribiendo procedimientos almacenados en postgresql 8.3

-- Function: paginacion_pais(integer, integer)

-- DROP FUNCTION paginacion_pais(integer, integer);

CREATE OR REPLACE FUNCTION paginacion_pais(number_of_items integer, page_number integer)
  RETURNS SETOF pais AS
$BODY$

	DECLARE
		r pais%ROWTYPE;
		maximo int:= page_number * number_of_items;
		items int:=1;
		num_items int:=0;
		total_items int:=0;
		diferencia int:=0;
		minimo int:= maximo - number_of_items +1;
	BEGIN

	        EXECUTE 'select count(*) from pais' INTO total_items;
	        IF maximo > total_items THEN
	          diferencia = maximo - total_items;
	        END IF;
                IF diferencia < number_of_items THEN
		FOR r IN SELECT * FROM pais
		LOOP
			-- can do some processing here
			if items = minimo then
			IF minimo <= maximo THEN

			RETURN NEXT r; -- return current row of SELECT
                        minimo=minimo+1;
			END IF;
			end if;
			items=items+1;
		END LOOP;

		END IF;

	RETURN;
	END

$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100
  ROWS 1000;

Forma de uso:

select * from paginacion_pais(100,25 );

episharirelex

March 1, 2009 @ 7:04 pm

Thank you!

coupons

September 16, 2011 @ 8:28 pm

Puedo decir que nunca he leído tanta información útil sobre Gulsin 2.0rg - El hermano feo de tux » Escribiendo procedimientos almacenados en postgresql 8.3. Quiero expresar mi gratitud a los webmaster de gulsin.org.

RSS feed para comentarios en esta entrada · TrackBack URI

Comenta