Einzelnen Beitrag anzeigen

fatima

Registriert seit: 2. Feb 2005
Ort: Köln
3 Beiträge
 
#1

Oracle + Firebird + Rekursion

  Alt 2. Feb 2005, 15:20
Hallo Leute,
durch Zufall bin ich auf dieses Forum gestoßen und muss sagen es gefällt mir außerordentlich gut!

Ich habe auch gleich ein Problem: Es geht um Rekursion in einer SP bei Firebird.

Sagen wir wir haben folgende einfache Tabelle mit folgendem Inhalt:
Code:
CREATE TABLE EMPLOYEE
(
  EMP_ID   NUMBER,
  CHEF_ID  NUMBER,
  EMP_NAME VARCHAR2(40 BYTE)
)
CREATE UNIQUE INDEX UQ_EMP_ID ON EMPLOYEE
(EMP_ID)


INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (20, NULL, 'Grosser Chef');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (10, 20, 'Abteilungsleiter Entwicklung');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (5, 20, 'Abteilungsleiter Verkauf');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (12, 10, 'Projektleiter');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (1, 12, 'Programmierer');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (2, 5, 'Sachbearbeiter A ');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (3, 5, 'Sachbearbeiter B');
INSERT INTO EMPLOYEE (EMP_ID, CHEF_ID, EMP_NAME) VALUES (18, 5, 'Azubi Verkauf');
Um eine strukturierte Uebersicht zu erhalten kann ich in Oracle einfach folgendes SQl absetzen:
Code:
SELECT E.CHEF_ID, E.EMP_ID , E.EMP_NAME , LEVEL
  FROM EMPLOYEE E
  START WITH E.CHEF_ID IS NULL
  CONNECT BY PRIOR E.EMP_ID = E.CHEF_ID
Mit Ergebnis in Preorder des Baumes:
Code:
CHEF_ID   EMP_ID   EMP_NAME                             LEVEL

NULL   20   Grosser Chef                     1
20   10   Abteilungsleiter Entwicklung   2
10   12   Projektleiter                     3
12   1   Programmierer                     4
20   5   Abteilungsleiter Verkauf             2
5   2   Sachbearbeiter A                      3
5   3   Sachbearbeiter B                     3
5   18   Azubi Verkauf                     3
Mit Firebird muss ich mir da sicher eine rekursive SP bauen, aber ich versuche nun schon seit Std ohne Erfolg, vlt kann mir jemand dabei helfen.

liebe Grüße
fatima
  Mit Zitat antworten Zitat