From: | "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com> |
---|---|
To: | Juan <smalltalker(dot)marcelo(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: RETURNS TABLE |
Date: | 2013-02-27 20:29:33 |
Message-ID: | CANm+PCDOQn5hB318Q4nFwmYsCO=AAJEdNFJF5CSL+geu=c83Ag@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Amigos, muchas gracias por sus respuestas, sinceramente no se en que habré
"metido la pata" pero ahora la función está andando de 10 con los retornos
de la manera return next;
Les pido disculpas porque parece que el error venía por otro lado,
aparentemente por un tipo de datos en un parámetro.
GRACIAS y DISCULPAS
Guillermo Villanueva
<http://ar.linkedin.com/in/guillermovillanueva>
El 27 de febrero de 2013 17:26, Juan <smalltalker(dot)marcelo(at)gmail(dot)com>escribió:
> 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:31:09 | Re: RETURNS TABLE |
Previous Message | Juan | 2013-02-27 20:26:25 | Re: RETURNS TABLE |