From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Carlos <cperochena(at)servilex(dot)com(dot)pe> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: {Spam?} funcion recursiva |
Date: | 2006-01-18 15:41:55 |
Message-ID: | 43CE61C3.2020107@soft-com.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Carlos escribió:
> Hola amigos, quisiera que me den una mano para crear una funcion
> recursiva que me permita sacar
> Paper->Non-Recycled->Scraps
>
> *table **supplyitem*
> | |
> si_id si_parentid si_item
> 1 null Paper
> 2 1 Recycled
> 3 2 20 lb
> 4 2 40 lb
> 5 1 Non-Recycled
> 6 5 20 lb
> 7 5 40 lb
> 8 5 Scraps
>
>
Hola,
Tienes que hacer una funcion que reciba como parámetro el id del nodo y
devuelva un varchar.
La funcion debe leer el registro correspondiente al nodo, llamarse a si
misma con el nodo padre concatenando el nodo actual. Asi hasta que el
nodo padre sea null.
Basicamente seria esto (lo estoy haciendo de memoria, comprueba los errores)
create function ruta_de_nodo(int4) returns "varchar"
declare
nodo alias for $1;
registro record;
ruta varchar;
begin
select into registro * from supplyitem where si_id = nodo;
if registro.si_parentid != null
ruta := ruta_de_nodo(registro.si_parentid) || ' -> ' || registro.si_item;
end if;
return ruta;
end
Suerte
--
*****************************************
Oswaldo Hernández
oswaldo(at)soft-com(dot)es
*****************************************
From | Date | Subject | |
---|---|---|---|
Next Message | Yazmina Gajardo | 2006-01-18 16:07:58 | Re: UPdate en tabla con relacionamiento compartido |
Previous Message | Rodrigo Barahona | 2006-01-18 15:33:05 | help |