1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| WITH CTE(TTLEVEL, TTIDMGR, TTNMMGR, TTPRMGR,
TTIDEMP, TTNMEMP, TTPREMP)
AS (
-- 1ère invocation : niveau 0 = pas de chef
SELECT 0 AS TTLEVEL
,0
,''
,''
,ZZIDENT
,SUBSTR(ZZNMPAT, 01, 10)
,SUBSTR(ZZPRPAT, 01, 10)
FROM MONSCHEM.MATABLE
WHERE ZZIDMGR = 0
UNION ALL
-- itération
SELECT CHEF.TTLEVEL+1
,EMPL.ZZIDMGR
,CHEF.TTNMEMP
,CHEF.TTPREMP
,EMPL.ZZIDENT
,SUBSTR(EMPL.ZZNMPAT, 01, 10)
,SUBSTR(EMPL.ZZPRPAT, 01, 10)
FROM CTE AS CHEF
INNER JOIN MONSCHEM.MATABLE AS EMPL
ON EMPL.ZZIDMGR = CHEF.TTIDEMP
-- condition d'arrêt obligatoire sinon SQLCODE +347
WHERE CHEF.TTLEVEL < 9
) |
Partager