Skip site navigation (1) Skip section navigation (2)

Re: Function que retorna una tabla

From: Calabaza <calalinux(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Function que retorna una tabla
Date: 2009-02-23 11:42:47
Message-ID: 958993320902230342o5acf876fn7d2a0668796d2fb5@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
El día 23 de febrero de 2009 7:47, Conrado Blasetti
<conrado(at)mapfre(dot)com(dot)ar> escribió:
> Gente, buenos días.
>
> Bueno, esto tema de seguro se habrá tocado,
> pero no logro dar con lo que necesito.
> La function que necesito es la que devuelve valores en registros:

> Dentro de ella quiero devolver N filas del tipo
> ej: codigo NUMERIC, descripción VARCHAR(30)

Puedes mirar la sección 38.7.3.5. Returning Cursors de esta pagina:
http://www.postgresql.org/docs/8.3/interactive/plpgsql-cursors.html

Y esta otra también...
http://www.postgresql.org/docs/8.3/interactive/sql-declare.html

> Pero esta devolución la hago loopeando una tabla
> y retornando valores a manos.

> La idea es joinearla en sql.

¿disculpa, pero no entiendo, Quieres hacer un join con el resultado?

>
> Ej:
>
>
> Create or replace function test() returns ????? as
> $$
> Declare
>  C1 record;
> Begin
>  For c1 in (select codigo, descripcion from tabla) loop
>    Return c1.codigo, c1.descripcion;
>        o
>    Return next c1.codigo, c1.descripcion;
> --LEI POR AHÍ, QUE ESTO DEBO HACERLO CON WHILE Y NO CON FOR, PUEDE SER?
>  End loop;
>
>  --ACA QUIERO POR EJEMPLO, DEVOLVER VALORES A MANO
>  Return next 999, 'CODIGO MANUAL';
>
>  --ACA QUIERO LLAMAR A UNA FUNCION Y QUE ELLA DEVUELVA UN REGISTRO
>  --DEL MISMO TIPO
>  Return f_devolver_codigo_descripcion;
> End;
> $$ language 'plpgsql'

> Lo ideal es poder hacer estas 3 cosas, en realidad,
> en la function tengo que hacer estas cosas.

Bueno creo que puedes usar union para armar tu sql
que luego le pasaras a tu cursor para crearlo:

select 888 as codigo, 'lo que viene de la tabla' as descripcion
union
(Select 999 as codigo, 'CODIGO MANUAL' as descripcion)
union
(Select 777 as codigo, 'Lo que viene de la fucnion' as descripcion)

Puedes ver: http://www.postgresql.org/docs/8.3/interactive/queries-union.html

> Bueno, la verdad, no encuentro la forma de poder armar
> esta function y que pueda devolver registro

> y que a su vez la pueda joinear en una sentencia sql
esto de joinear sigo sin entenderlo todavía...

> Desde ya, muchas gracias.

Ok, Un abrazo...

> Saludos,
> Conrado
>
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
>    (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)

-- 
§~^Calabaza^~§ from Villa Elisa, Paraguay

In response to

Responses

pgsql-es-ayuda by date

Next:From: Conrado BlasettiDate: 2009-02-23 11:49:34
Subject: RE: Function que retorna una tabla
Previous:From: Conrado BlasettiDate: 2009-02-23 10:47:54
Subject: Function que retorna una tabla

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group