From: | Jaime Casanova <systemguards(at)gmail(dot)com> |
---|---|
To: | Luis Guevara <luis(dot)a(dot)guevara(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:05:27 |
Message-ID: | c2d9e70e0601200905k22d7c989n6ef534fd5c9d8201@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 ;)
From | Date | Subject | |
---|---|---|---|
Next Message | Luis Guevara | 2006-01-20 17:24:58 | Re: Ayuda en consulta complicada |
Previous Message | Luis Guevara | 2006-01-20 16:38:20 | Re: Ayuda en consulta complicada |