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

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

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