RE: Duda entre refcursor y record

From: Lazáro Rubén García Martínez <lgarciam(at)vnz(dot)uci(dot)cu>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Duda entre refcursor y record
Date: 2012-07-05 13:47:46
Message-ID: 294D3D02D5E18D42827B2ECFEADEB688472A44BB51@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro muchas gracias por tu respusta, ahora te pregunto, si en vez de retornar los valores de la consulta utilizando un For Loop, lo hago utilizando un RETURN QUERY obtendría alguna ventaja, o sucedería lo mismo que si realizo un For Loop, me refiero a si con esta otra via también hay que crear un tuplestore con el resultado. (El tuplestore es la variable que se recorre en el ciclo no??)

La consulta quedaría de esta forma:

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
RETURN QUERY SELECT escuela.id_escuela, escuela.nombre, escuela.escuela_relacionada
FROM escuela;
END;
$body$
LANGUAGE 'plpgsql';

Atento a tus recomendaciones.
Saludos.

________________________________________
From: Alvaro Herrera [alvherre(at)alvh(dot)no-ip(dot)org]
Sent: Wednesday, July 04, 2012 11:31 PM
To: Lazáro Rubén García Martínez
Cc: Ayuda
Subject: Re: [pgsql-es-ayuda] Duda entre refcursor y record

Excerpts from lgarciam's message of mié jul 04 19:24:14 -0400 2012:
> 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?

Depende de si quien llama a la función leerá todo el resultado o sólo
una parte. Si es sólo una parte, el refcursor gana porque no ejecuta
toda la consulta sino sólo la parte que es leída. Si lo lee todo, igual
gana el refcursor, porque de la otra manera hay que crear un tuplestore
con el resultado. Pero desde el punto de vista de la mantenabilidad
(¿? sorry, es tarde), la variables OUT son mucho más claras en el código
de la aplicación que leer desde un cursor.

--
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

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

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2012-07-05 14:42:28 RE: Duda entre refcursor y record
Previous Message Alvaro Herrera 2012-07-05 04:01:59 Re: Duda entre refcursor y record