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
>>>
>>>
>>
>
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 |