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