Re: Funcion recursiva

From: "omar neyra" <xomarx69(at)gmail(dot)com>
To: "Diego Gil" <listas(at)adminsa(dot)com>
Cc: javier(dot)castro(at)enfoque-si(dot)com, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Funcion recursiva
Date: 2007-10-25 20:36:59
Message-ID: 21b99cb00710251336l6c1c69abv7b4ebfb39c6162c6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos, a mi parecer no creo que utilizar una función recursiva sea la
mejor opción, recuerden que este tipo de funciones almacenan una copia en la
pila de la memoria cada ves que es llamada y esto puede provocar un quiebre
en memoria (en el peor de los casos, que es el que se debe medir siempre que
diseñamos algun algoritmo),
Para este caso pienso que es mejor implementar un ciclo simple, algo como
muestro a continuación;

CREATE OR REPLACE FUNCTION ruta(raiz INTEGER) RETURNS "varchar" AS
$BODY$
declare
ruta varchar := '';
descripcionreturn varchar := '';
begin
LOOP
select id_padre, descripcion from la_tabla where idraiz = raiz;
raiz := 'el id_padre que retorna el select anterior';
ruta := ruta || 'la descripcion obtenida en la consulta anterior';

if raiz = 0 then
return ruta; (o EXIT??)
END IF;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql';

como se dieron cuenta, este algoritmo no es valido ya que faltan algunos
pasos, lo que sucede es que recien estoy aprendiendo a usar postgres y aun
no se como solucionar la parte de recuperar los campos obtenidos en la
consulta, este algoritmo solo recupera un registro por cada consulta y no el
set completo de registros como sucederia con cada llamada recursiva
Creo que faltaria solucionar lo de la recuperacion instantanea de los campo
y si se me algo, bueno, lo arreglamos!!
--
OMAR NEYRA RODRÍGUEZ
Desarrollo y Soporte

CENTRO DE INFORMÁTICA Y COMPUTACIÓN
(Informatics and Computing Center)

UNIVERSIDAD DE LA SERENA

Tel/Phone (56 51) 282971
Celular: (56 9) 88770234
email: omneyra(at)userena(dot)cl
www.userena.cl

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Esteban Osorio 2007-10-25 20:45:11 [pgsql-es-ayuda] Migración desde 8.1.4 a 8.2.5
Previous Message MIGUEL CANCHAS 2007-10-25 20:17:34 RE: Instalar en Servidor y en Cliente