From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Ever Daniel Barreto Rojas <ebarreto(at)nexusit(dot)com(dot)py> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Mi primera funcion en POSTGRESQL |
Date: | 2007-10-06 19:23:51 |
Message-ID: | 20071006192351.GJ7190@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ever Daniel Barreto Rojas escribió:
> El 06/10/2007 a las 12:07 p.m., escribiste:
> >> De todas maneras me gustaria saber(de curiosidad...) como solucionar lo que
> >> pase
> > Al ejecutar la funcion debes especificar el tipo de retorno, algo asi:
> > select * from funcion(parametro) as func(a int, b text, c timestamp, ...)
> > etc.
> > Alternativamente, en lugar de definir la funcion con RETURNS SETOF
> > RECORD, puedes hacer una funcion con parametros OUT. De esa forma no
> > tienes que especificar el tipo de dato de salida al momento de invocar
> > la funcion.
>
> creo que otra alternativa, es crear un TYPE nombre_tipo y hacer en
> la función RETURNS SETOF nombre_tipo
>
> así te ahorras el "as func(..."
>
> creo que era así... si no estoy equivocado
Sí, era así, pero el problema es que si vas a crear 500 funciones
necesitas 500 tipos, lo cual es muy incómodo.
En realidad lo más fácil es cuando la función retorna el mismo tipo que
una tabla que existe en el sistema. Entonces puedes hacer "RETURNS
SETOF nombre_tabla". (Básicamente es lo mismo que RETURNS SETOF
nombre_tipo", con la diferencia que no necesitas crear el tipo
separadamente. Cada vez que creas una tabla, se crea un tipo con el
mismo nombre).
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Ever Daniel Barreto Rojas | 2007-10-06 20:06:06 | Re[2]: Mi primera funcion en POSTGRESQL |
Previous Message | Ever Daniel Barreto Rojas | 2007-10-06 18:38:45 | Re[2]: Mi primera funcion en POSTGRESQL |