Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Procedimiento recursivo (https://www.clubdelphi.com/foros/showthread.php?t=57113)

Vlady 05-06-2008 19:18:45

Procedimiento recursivo
 
Hola amigos del foro mi pregunta es la siguiente tengo una tabla con los siguientes campos:

ID, ANTECESOR, CUENTA, NOMBRE CUENTA
--------------------------------------------
1, NULL, 1, ACTIVO
2, NULL, 11, DISPONIBLE
3, NULL, 1105, CAJA
4, NULL, 110505, CAJA GENERAL
5, NULL, 110510, CAJAS MENORES
.
.
.

y asi sucesiva mente en un arbol

La cuestion es la siguiente el campo antecesor lo debo de llenar con el ID del numero de cuenta q en el orden gerarquico corresponda alog asi como esto:


ID, ANTECESOR, CUENTA, NOMBRE CUENTA
--------------------------------------------
1, -1, 1, ACTIVO
2, 1, 11, DISPONIBLE
3, 2, 1105, CAJA
4, 3, 110505, CAJA GENERAL
5, 3, 110510, CAJAS MENORES
6, 2, 1110, BANCOS
.
.
.

he creado el siguiente procedimiento q de forma recursiva me recorra la tabla y me actualice el campo antecesor, lo haga con pruebas de escritorio y creo q funciona bien pero cuando lo ejecuto me aparecen todos la columna antecesor en uno cuando corro el procedimiento le doy como paramentros de entrada 1 y 1, este es el codigo

Código SQL [-]
CREATE PROCEDURE ACTULIZARPUC (
    antecesor integer,
    cuenta integer)
as
declare variable id1 integer;
declare variable cuenta1 varchar(20);
begin
   FOR SELECT ID, CUENTA FROM PUC
     WHERE CUENTA LIKE (:CUENTA || '%') ORDER BY CUENTA INTO :ID1, :CUENTA1 DO
   BEGIN
      if (:CUENTA = :CUENTA1) then
      BEGIN
          UPDATE PUC SET ANTECESOR = :ANTECESOR WHERE ID = :ID1;
          ANTECESOR = :ID1;
      END
      ELSE
         EXECUTE PROCEDURE ACTULIZARPUC :ANTECESOR, :CUENTA1;
   END
end
 
estoy trabajando con firebird 2.0 y delphi 7, si alguien sabe donde esta el problema en la recursividad por favor me lo diga. Gracias


La franja horaria es GMT +2. Ahora son las 00:50:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi