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 16:38:20
Message-ID: fa2b6e3a0601200838v435ff6a9y@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

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 Alvaro,
> >
> > Estoy compilando la función y ya corregí unas cuantas comas pero ahora
> me
> > sale el siguiente error al compilar
> >
> > ERROR: syntax error en o cerca de «select»
> >
> > Solo se que hay un error en el SELECT que se encuentra dentro del FOR,
> pero
> > no lo ubico.
> >
> > Por favor espero que puedas ayudarme.
> >
> > Gracias
>
>
> if foo.depende is not null then
> - for select into foo depe_id, descripcion, depende
> + for foo in select depe_id, descripcion, depende
> from func(foo.depende) loop
> return next foo;
> end loop;
> end if;
>
>
> saca la linea marcada con (-) y cambiala por la linea marcada con (+)
>
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--
atte.
Luis Guevara

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-01-20 17:05:27 Re: Ayuda en consulta complicada
Previous Message Jaime Casanova 2006-01-20 16:25:08 Re: Ayuda en consulta complicada