Re: Ayuda en consulta complicada

From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>, PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda en consulta complicada
Date: 2006-01-20 15:42:04
Message-ID: fa2b6e3a0601200742m6e246b14i@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

2006/1/20, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>:
>
> Luis Guevara escribió:
> > Hola Amigos:
> >
> > Tengo la siguiente tabla Dependencia:
> >
> > depe_id Descipcion Depende
> > 1 AAAAA Null
> > 2 bbbbbb Null
> > 3 xxxxxx Null
> > 4 yyyyyyyy 2
> > 5 zzzzzzz 4
> >
> > Quiero crear un procedimiento al cual le envíe como parámetro el depe_id
> y
> > me devuelva todos los registros que
> > dependen de ese depe_id. Por ejm si llamo a la función así:
> > select * from myfuncion(2)
> > que me devuelva el siguiente cursor:
> >
> > depe_id Descipcion Depende
> > 2 bbbbbb Null
> > 4 yyyyyyyy 2
> > 5 zzzzzzz 4
>
> Creo que lo mas sencillo seria una funcion recursiva, algo asi (ojo, no
> he probado que este correcta. Ni siquiera se si compila. Haz las
> correcciones necesarias y despues nos la envias de vuelta):
>
> create function func(int) returns setof dependencia language plpgsql as
> $$
> declare
> foo record;
> begin;
> select into foo depe_id, descripcion, depende
> from dependencia
> where depe_id = $1;
>
> if not found
> return;
> end if;
>
> if (foo.depe_id = foo.depende) then
> raise exception 'soy un idiota';
> end if;
>
> return next foo;
>
> if foo.depende is not null then
> for select into foo depe_id, descripcion, depende
> from func(foo.depende) loop
> return next foo;
> end loop;
> end if;
>
> return;
> end;
> $$;
>
> --
> Alvaro Herrera
> http://www.amazon.com/gp/registry/CTMLCN8V17R4
> "The Postgresql hackers have what I call a "NASA space shot" mentality.
> Quite refreshing in a world of "weekend drag racer" developers."
> (Scott Marlowe)
>

--
atte.
Luis Guevara

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-01-20 16:25:08 Re: Ayuda en consulta complicada
Previous Message Alvaro Herrera 2006-01-20 14:35:54 Re: Ayuda en consulta complicada