Registriert seit: 2. Feb 2005
Ort: Köln
3 Beiträge
|
Oracle + Firebird + Rekursion
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
|