RE: Consultas varias

Lists: pgsql-es-ayuda
From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Esteban Osorio <eosorio(at)economia(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Consultas varias
Date: 2004-12-16 15:05:42
Message-ID: 20041216150542.GD11577@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On Thu, Dec 16, 2004 at 12:03:30PM -0400, Esteban Osorio wrote:

Hola,

> CREATE FUNCTION public.busca_depcia() RETURNS refcursor AS '
> DECLARE
> cursor1 CURSOR FOR SELECT id_depcia, descripcion FROM dependencia order by
> descripcion;
> BEGIN
> OPEN cursor1;
> RETURN (cursor1);
> END;
> ' LANGUAGE 'plpgsql' VOLATILE;

Ugh ... ese truco del refcursor esta obsoleto desde Postgres 7.3. Mejor
algo como

CREATE FUNCTION public.busca_depcia() RETURNS setof record AS '
DECLARE
rec record;
begin
FOR SELECT into rec id_depcia, descripcion FROM dependencia order by descripcion loop
return next rec;
end loop;
return;
END;
' LANGUAGE 'plpgsql' VOLATILE;

Luego lo invocas como

select public.busca_depcia() as foo (a int, b text);

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
Essentially, you're proposing Kevlar shoes as a solution for the problem
that you want to walk around carrying a loaded gun aimed at your foot.
(Tom Lane)


From: Esteban Osorio <eosorio(at)economia(dot)cl>
To: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: Consultas varias
Date: 2004-12-16 16:03:30
Message-ID: 50FBA0B402D8D6118EEC0080C8F8BA33022D838F@KEYNES
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Para poner un ejemplo sencillo veamos esta declaración:

CREATE FUNCTION public.busca_depcia() RETURNS refcursor AS '
DECLARE
cursor1 CURSOR FOR SELECT id_depcia, descripcion FROM dependencia order by
descripcion;
BEGIN
OPEN cursor1;
RETURN (cursor1);
END;
' LANGUAGE 'plpgsql' VOLATILE;

¿Como hacer para obtener desde php cada una de las filas del resultado de
esta consulta?

Saludos,

Esteban.

-----Mensaje original-----
De: Alvaro Herrera [mailto:alvherre(at)dcc(dot)uchile(dot)cl]
Enviado el: Jueves, 16 de Diciembre de 2004 10:56
Para: Esteban Osorio
CC: Juanky Moral; pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Consultas varias

On Thu, Dec 16, 2004 at 11:10:38AM -0400, Esteban Osorio wrote:

Hola,

> Respecto de la consulta y respuesta anteriores me gustaría saber si
alguien
> me pudiese aclarar la siguiente duda: al realizar consultas complejas en
el
> lado del servidor usando funciones plpgsql que retornen varias filas ¿cómo
> puedo acceder desde php a éstas?, he intentado hacerlo de la manera
> tradicional en que se acceden consultas select pero no me ha funcionando.

Hum, como has tratado y no te ha funcionado? Porque ciertamente se
puede.

Supongo que podriamos partir viendo las declaraciones de las
funciones ...

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"No reniegues de lo que alguna vez creíste"