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
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a