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
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 |