Hallo Zusammen,
vielen Dank für die Infos als CTE könnte man es wie folgt lösen:
Code:
DECLARE CSR01 CURSOR FOR
With RPL (level, TSTNRK, TSSTNK, TSMENG) As (
(Select 1, ROOT.TSTNRK, ROOT.TSSTNK, ROOT.TSMENG
From HTSLSP ROOT where
TSTNRK = :XX_KEY )
Union All
(Select PARENT.level+1,
CHILD.TSTNRK, CHILD.TSSTNK, CHILD.TSMENG * PARENT.TSMENG
From RPL PARENT, HTSLSP CHILD
Where PARENT.TSSTNK = CHILD.TSTNRK)
) Select TSSTNK, Sum(TSMENG) As TSMENG From RPL
Group By TSSTNK
.. da ich aber Transparenz bevorzuge und hier die Gefahr von Endlosrekursion besteht, habe ich mich für folgenden Weg entschied:
- Auflösung über Rekursive RPG_Funktion
- Übergabe einer DS-Array
- jede Ebene wird über ein SQL aufgelöst welches die Daten in ein temp. Array "entläd" da der Cursor quasi Global geöffnet ist.
Bookmarks