From: | Jairo Martín Miguel <jairo010(at)hotmail(dot)com> |
---|---|
To: | alvherre(at)surnet(dot)cl, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: ejecutar una consulta creada |
Date: | 2005-05-25 21:51:47 |
Message-ID: | BAY104-F3435FFDB18DC744E092747810E0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
> > >create function foo(text) returns setof <tipo> language sql as '
> > >select ... WHERE ok_personas.seccion = $1';
> > >
> > me podrías aclarar cual es el tipo que tengo que devolver como resultado
> > (donde pones <tipo>) no puedo devolver un subconjunto de las tuplas de
>una
> > de mis tablas, ya que el resultado tiene campos de las tres tablas que
> > incluyo en el FROM. Los tipos de los campos devueltos son:
> >
> > El campo "nombre" de tipo text se recoge de la tabla "OK_PERSONAS"
> > El campo "programa" de tipo text se recoge de la tabla "DW_EDT"
> > El campo "horas" de tipo float8 se recoge de la tabla "DW_HORAS"
>
>Dos formas:
>
>a) CREATE TYPE un_tipo (nombre text, programa text, horas float8);
> CREATE FUNCTION .. RETURNS SETOF un_tipo
>
>
>b) CREATE FUNCTION foo ... RETURNS SETOF RECORD
> SELECT * FROM foo(...) AS func(nombre text, programa text, horas
>float8)
>
>Suerte,
Gracias, ya me devuelve el resultado esperado, pero lo hace de un modo
extraño.
Creo el tipo:
CREATE TYPE resultadoconsultahoras AS
(nombre text,
programa text,
horas float8);
Creo la función:
CREATE OR REPLACE FUNCTION consulta2(text) RETURNS SETOF
resultadoconsultahoras AS
'SELECT OK_PERSONAS.nombre, DW_EDT.programa, DW_HORAS.horas FROM OK_PERSONAS
INNER JOIN (DW_HORAS INNER JOIN DW_EDT ON DW_HORAS.programa=DW_EDT.programa)
ON OK_PERSONAS.persona=DW_HORAS.persona WHERE OK_PERSONAS.seccion = $1'
LANGUAGE 'sql' VOLATILE;
Pero cuando llamo a la función con select consulta2('A') lo que
me devuelve es lo esperado, pero en vez de sacarlo como separado en campos
como siempre, me devuelve el resultado de este modo: en una sola conlumna
con los campos separados por comas.
consulta2(resultadoconsultahoras)
fila1 (Alberto,programa2,50)
fila2 (Jairo,programa1,100)
aunque el resultado es equivalente la funcionalidad que me ofrece no es la
misma que si apareciese en el modo habitual
nombre programa horas
fila1 Alberto programa2 50
fila2 Jairo programa1 100
se puede arreglar de algun modo????
muchas gracias
_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias.
http://www.msn.es/Mujer/moda/default.asp
From | Date | Subject | |
---|---|---|---|
Next Message | Marcelo Retamal Vallejos | 2005-05-25 21:55:05 | Re: Sobre php y postgres |
Previous Message | Alejandro Romero Parra | 2005-05-25 21:38:19 | Re: Obteniendo informacion de 3 tablas en forma de columnas y no renglones. (Vista, Procedimiento Almacenado o consulta sencilla?). |