Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Esteban OsorioDate: 2007-10-25 20:45:11
Subject: [pgsql-es-ayuda] Migración desde 8.1.4 a 8.2?==?iso-8859-1?Q?.5
Previous:From: MIGUEL CANCHASDate: 2007-10-25 20:17:34
Subject: RE: Instalar en Servidor y en Cliente

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group