Ca donne :
Declare
total2 number NOT NULL DEFAULT 0;
NB number NOT NULL DEFAULT 0;
LEVEL number NOT NULL DEFAULT 0;
CURSOR F_PACK IS SELECT * FROM SAP_PACKAGES WHERE PACKAGE_TYPE = 'HF' ORDER BY PACKAGE_ID ASC ;
Begin
SELECT MAX(PACKAGE_LEVEL) INTO LEVEL FROM SAP_PACKAGES ;
loop
For F in F_PACK loop
SELECT COUNT(*) INTO NB FROM SAP_PACKAGES WHERE PACKAGE_PARENT_ID = F.PACKAGE_ID ;
If NB = 0 then
DELETE FROM SAP_PACKAGES WHERE PACKAGE_ID = F.PACKAGE_ID ;
total2 := total2 +1 ;
end if ;
end loop ;
LEVEL := LEVEL - 1;
exit when LEVEL = 0 ;
end loop ;
DBMS_OUTPUT.PUT_LINE(total2 || ' suppression(s) ');
end ;
Donc, j'ai écris 2 script PL/SQL séparés pour ma hiérarchie de composants.Il ne me reste plus qu'à trouver la méthode pour créer une fonction et éviter de répéter la requête l'insertion.