Re: {Spam?} funcion recursiva

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

In response to

Browse pgsql-es-ayuda by date

  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