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