Re: Ayuda en consulta complicada

From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda en consulta complicada
Date: 2006-01-20 17:24:58
Message-ID: fa2b6e3a0601200924s74d22b7k@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Si esos son los campos, con toda seguridad, el problema es que me devuelve
este error:

ERROR: wrong record type supplied in RETURN NEXT
CONTEXT: PL/pgSQL function "test" line 12 at return next

Ojo que lo que deseo es obtener una lista de todos los registros que
dependen de una dependencia. Entonces
el resultado debe ser un grupo de registros y no un solo registro. Por eso
no entiendo porque en la funcion se ha puesto que devuelva un tipo de dato
RECORD, si ese tipo de dato, tengo entendido que solo devuelve una fila.

Espero puedas seguir ayudandome.

Gracias

El día 20/01/06, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
>
> On 1/20/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> > Gracias Jaime:
> >
> > Ya compilé. pero al llamar a la función con
> >
> > select * from test(2)
> >
> > me devuelve el siguiente error:
> >
> > ERROR: wrong record type supplied in RETURN NEXT
> > CONTEXT: PL/pgSQL function "test" line 12 at return next
> >
> > Al parecer hay un error con el tipo de dato que devuelve RECORD, porque
> no
> > va a devolver un solo registro sino varios registros.
> >
> > La función ha quedado compilada así:
> >
> > CREATE OR REPLACE FUNCTION "public"."test" (integer) RETURNS SETOF
> > "public"."dependencia" AS
> > $body$
> > declare
> > foo record;
> > begin
> > select into foo depe_id, depe_nombre, depe_depeid
> > from dependencia
> > where depe_id = $1;
> >
> >
> > if not found then
> > return;
> > end if;
> >
> > return next foo;
> >
> > if foo.depe_depeid is not null then
> > for foo in select depe_id, depe_nombre, depe_depeid
> > from test(foo.depe_depeid) loop
> > return next foo;
> > end loop;
> > end if;
> >
> > return;
> > end
> > $body$
> > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
> >
> > ¿Cómo podría arreglar esto?
> >
> > Gracias por su apoyo.
> >
> >
>
> a mi si me funciona...
> seguro que los campos de tu tabla son depe_id, depe_nombre, depe_depeid
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--
atte.
Luis Guevara

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Yessica Brinkmann 2006-01-20 17:47:14 Postgres, logs, dumps y bases de datos descentralizadas.¿?
Previous Message Jaime Casanova 2006-01-20 17:05:27 Re: Ayuda en consulta complicada