Re: ejecutar una consulta creada

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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?).