Génération auto des contraintes d'intégrites dans une BDD

Eléphanteau du PHP | 20 Messages

14 mars 2013, 17:28

Bon, j'ai finalisé le 3eme point des 3 conditions citées plus haut.
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.