[Pgsql-ayuda] Migrar a PostgreSQL

Alvaro Herrera Munoz alvherre@dcc.uchile.cl
Mon, 11 Aug 2003 15:52:11 -0400


On Mon, Aug 11, 2003 at 01:42:53PM -0400, jorge medina wrote:

> Cualquier consejo  son bienvenidos. (Si alguien tiene alg?n ejemplo de
> FUNCTION(s), que regresen multiples registros (tuplas) y  la forma de
> llamarlo desde un SQL tambien me interesa)

Muy simple:

CREATE OR REPLACE FUNCTION intervalos
        (timestamp with time zone,
        timestamp with time zone,
        interval) RETURNS SETOF RECORD AS
'DECLARE
        inicio  ALIAS FOR $1;
        valor   timestamp with time zone;
        final   ALIAS FOR $2;
        paso    ALIAS FOR $3;
        ret     RECORD;
BEGIN
valor := inicio;
LOOP
        IF valor >= final THEN
                RETURN;
        END IF;
        SELECT INTO ret valor, valor+paso;
        RETURN NEXT ret;
        valor := (valor + paso);
END LOOP;
END;
' LANGUAGE plpgsql IMMUTABLE WITH (isstrict);



SELECT *
FROM intervalos('2003-05-01'::timestamptz, '2003-06-01'::timestamptz, '1 day')
AS foo(a timestamptz, b timestamptz);

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"On the other flipper, one wrong move and we're Fatal Exceptions"
(T.U.X.: Term Unit X  - http://www.thelinuxreview.com/TUX/)