Duda entre refcursor y record

From: Lazáro Rubén García Martínez <lgarciam(at)vnz(dot)uci(dot)cu>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Duda entre refcursor y record
Date: 2012-07-04 23:24:14
Message-ID: 294D3D02D5E18D42827B2ECFEADEB688472A44BB4F@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos en la lista, necesito desarrollar un conjunto de funciones que serán ejecutadas desde PHP. Mi duda es la siguiente.

Para retornar un conjunto de datos, que debería ser más óptimo, utilizar un refcursor, o utilizar variables de salida (OUT) y retornar el resultado dentro de un For Loop?

Algo como esto:

Utilizando cursor:

CREATE OR REPLACE FUNCTION public.fun_listar_escuela (
)
RETURNS pg_catalog.refcursor AS
$body$
DECLARE
cursor_salida refcursor;
BEGIN
open cursor_salida FOR SELECT * FROM escuela;
RETURN cursor_salida;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

Utilizando record:

CREATE OR REPLACE FUNCTION public.fun_listar_escuela (
out id_escuela integer,
out nombre varchar,
out escuela_relacionada integer
)
RETURNS SETOF record AS
$body$
DECLARE
tmp record;
BEGIN
FOR tmp IN SELECT * FROM escuela
Loop
id_escuela = tmp.id_escuela;
nombre = tmp.nombre;
escuela_relacionada = tmp.escuela_relacionada;
RETURN NEXT;
END Loop;
RETURN;
END;
$body$
LANGUAGE 'plpgsql';

Atento a sus recomendaciones.
Saludos.

Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2012-07-05 04:01:59 Re: Duda entre refcursor y record
Previous Message Fernando Siguenza 2012-07-04 04:37:18 RE: Instalar crosstab en postgresql 9.1