Ver Mensaje Individual
  #4  
Antiguo 26-08-2004
JulioGO JulioGO is offline
Miembro
 
Registrado: ago 2004
Posts: 94
Reputación: 20
JulioGO Va por buen camino
Modifica tu tabla agregando un campo contad(este servira cuantos id hijos tiene)

ID NOMBRE ID_PADRE CONTAD
1 RUBRO1 0 1
2 RUBRO11 1 1
3 RUBRO111 2 0 ///FIJATE EN ESTE DETALLE
3 RUBRO2 0
4 RUBRO21 3

Aqui te mando este procedure para rectificar mi error:

CREATE PROCEDURE OBTENER_HIJOS(ID_PADRE INTEGER)
RETURNS(NOMBRE VARCHAR(50))
AS
BEGIN
FOR SELECT NOMBRE FROM RUBROS
WHERE ID_PADRE=:ID_PADRE ORDER BY ID INTO :NOMBRE DO
BEGIN
SUSPEND;
END
END

Ahora modifica

CREATE PROCEDURE GET_ARBOLRUBROS
RETURNS (NOMB_PADRE CHAR (50), NOMB_HIJO VARCAR(50))
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE CONT INTEGER;
BEGIN
FOR SELECT ID, NOMBRE, CONTAD FROM RUBROS
ORDER BY ID INTO :ID, :NOMB_PADRE, :CONTAD DO
BEGIN
IF (:CONTAD > 0) THEN
BEGIN
FOR SELECT NOMBRE FROM OBTENER_HIJOS(:ID)
INTO :NOMB_HIJO DO
BEGIN
SUSPEND;
END
END
END
END


Ojala te sirva, salu2.
Responder Con Cita