Re: RETURNS TABLE

From: Juan <smalltalker(dot)marcelo(at)gmail(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: RETURNS TABLE
Date: 2013-02-27 20:26:25
Message-ID: CAKizN9xBpy_apNg=BpNAASCAs+=7iEhCi+KRxCbUe7snM-kGnA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Guillermo

entre lineas

2013/2/27 Guillermo E. Villanueva <guillermovil(at)gmail(dot)com>

> Ok, podría forzar un for, pero no me gustaba mucho la idea.
> Muchas gracias.
>

Por eso en tu bucle calculas. rellenas el type que funciona como si fuera
una struct donde metes datos.
luego en cada iteraccion devolves esta struct.
es justo, segun yo lo veo, lo que necesitas.
salu2
jmdc

>
> Guillermo Villanueva
> <http://ar.linkedin.com/in/guillermovillanueva>
>
>
> El 27 de febrero de 2013 17:19, Juan <smalltalker(dot)marcelo(at)gmail(dot)com>escribió:
>
> Guillermo
>>
>>
>> Hasta donde se el return next ; es dentro de un for... loop que en tu
>> code no se ve.
>> Ademas es return next var;
>> donde var es la variable que venis recorriendo en el loop.
>> si realmente tenes un loop, arma un tipo (type) con los campos ( que
>> necesites) y que vos queres y devolver en cada
>> iteracion devolvelo.
>> si por ej se llama t , la variable seria algo asi.
>>
>> declare t type;
>> ...
>> beguin
>>
>> for ...
>>
>> t.campo1= alguncalculo;
>> t.campo2= otrocalculo ;
>>
>> return next t
>> loop
>> ..
>> end
>>
>> salu2
>>
>> jmdc
>>
>> 2013/2/27 Guillermo E. Villanueva <guillermovil(at)gmail(dot)com>
>>
>> Amigos no puedo encontrar ni en la doc oficial ni en google algo muy
>>> simple, quiero declarar una función de tipo tabla que va a devolver 3 o 4
>>> datos nada mas en una tabla de una sola columna, esos datos provienen de
>>> unos cálculos
>>> Intenté algo así:
>>> CREATE OR REPLACE FUNCTION mifuncion(parametros) RETURNS table(columna
>>> integer) AS
>>> $BODY$
>>> declare
>>> li_retorno integer := -1;
>>> li_retorno_ext integer := -1;
>>> ...
>>> ...
>>>
>>> begin
>>> ...
>>> ...
>>> columna := li_retorno;
>>> return next;
>>> if li_retorno_ext <> -1 then
>>> columna := li_retorno_ext;
>>> return next;
>>> end if;
>>> end;
>>> $BODY$
>>> LANGUAGE plpgsql
>>>
>>> Cuando debería devolver dos filas, me devuelve uno solo, estoy seguro
>>> que esa no es la forma de ir armando fila por fila. Cual sería la forma?
>>> Una tabla temporal adentro de la función?
>>> Desde ya muchas gracias
>>>
>>> Guillermo Villanueva
>>>
>>>
>>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo E. Villanueva 2013-02-27 20:29:33 Re: RETURNS TABLE
Previous Message Guillermo E. Villanueva 2013-02-27 20:24:44 Re: RETURNS TABLE