RE: Function que retorna una tabla

From: "Conrado Blasetti" <conrado(at)mapfre(dot)com(dot)ar>
To: "Silvio Quadri" <silvioq(at)gmail(dot)com>
Cc: "Calabaza" <calalinux(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Function que retorna una tabla
Date: 2009-02-23 14:12:01
Message-ID: 76A99F19229DC440909CF1B905F8012C0790B148@sar001998.Mapfre.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Silvio, gracias por responder, pero me estas respondiendo mi ultima consulta.

En tu ejemplo, lo que necesito es desarrollar function(), que sea capaz de devolver la tabla que me comentas.

La funcion debe devolver campos cuyos valores pueda cargar a mano.

Ej

Declare
Reg my_type;
Begin
For c1 in (select 1 as codigo, 'algo' as desc union select 2 as codigo, 'otro algo' as desc) loop
Reg.codigo := c1.codigo;
Reg.descripcion:= c1.desc;
Return next reg;
End loop;

--EN ESTA MISMA FUNCTION
Reg.codigo := 999;
Reg.descripcion:= 'desc inventada';

Return next reg;

End;

-----Mensaje original-----
De: Silvio Quadri [mailto:silvioq(at)gmail(dot)com]
Enviado el: Lunes, 23 de Febrero de 2009 11:50 a.m.
Para: Conrado Blasetti
CC: Calabaza; pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Function que retorna una tabla

El día 23 de febrero de 2009 11:27, Conrado Blasetti
<conrado(at)mapfre(dot)com(dot)ar> escribió:
> Bien, tomado en cuenta, lo que pasa, es que me resisto a pensar que no se puede, en Oracle select * from table( function() ), desde function, hacía lo que necesito, pero bien, será cuestión de adaptación!
>
> Gracias

Sí que se puede
Solo con ...

select * from function()

en el caso que function() devuelva una tabla es suficiente.
Si querés joinear ...

select * from function() a, tabla b where a.campo1 = b.campo1

funciona

Si querés recorrer function() en una sp y cambiar datos, sólo
necesitás hacer ...

for rresultado in select * from function
loop
rresultado.campo1 = f_cualquiera1();
rresultado.campo2 = f_cualquiera2();
rresultado.campo3 = f_cualquiera3();
return next rresultado;
end loop;

y listo ...

Lamentablemente, perdí el hilo de cómo venía la conversación, pero me
parece que lo que te estoy respondiendo es suficiente.
Saludos!

Silvio

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jenaro Centeno Gómez 2009-02-23 15:23:40 Re: SQL Manager for PostgreSQL
Previous Message Silvio Quadri 2009-02-23 13:50:22 Re: Function que retorna una tabla