| 12
 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
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 
 |  
CREATE OR REPLACE TRIGGER updateTempGest
AFTER INSERT ON TEMP
FOR EACH ROW
 
DECLARE cpt int := 1;
		cpt1 int := 1;
		cpt2 int := 1;
		cpt3 int := 1;
		nbreElement int := "SELECT count(*) FROM GEST";		/*récupération du nombre d'élément dans la table GESTOR*/
		ligneGest GESTOR.matr_gest%TYPE;		/*nomTable%TYPE = meme type que le champ de la table*/
		ligneTemp TEMP.matr_gest%TYPE;
		TYPE codeGest IS TABLE OF VARCHAR(10) INDEX BY BINARY_INTEGER;		/*création d'un type de tableau*/
		tabGest codeGest;		/*déclaration d'un tableau*/
		tabTemp codeGest;
		CURSOR lectGest IS SELECT matr_gest FROM GESTOR;		/*création d'un curseur parcourant la table GEST*/
		CURSOR lectTemp IS SELECT matr_gest FROM TEMP;
 
BEGIN
	OPEN lectGest;		/*ouverture du curseur*/
	OPEN lectTemp;
 
	/*récupération de tous les matricules de la table TEMP pour insérer dans un tableur*/
	FOR cpt IN 1..nbreElement LOOP
		FETCH lectTemp INTO ligneTemp;		/*passage à la ligne suivante*/
		tabTemp(cpt) := ligneTemp;			/*enregsitrement de la valeur du matricule dans une case du tableau*/
	END LOOP;
 
	FOR cpt1 IN 1..nbreElement LOOP
		FETCH lectGest INTO ligneGest;
		tabGest(cpt1) := ligneGest;
	END LOOP;
 
	FOR cpt2 IN 1..nbreElement LOOP
		FOR cpt3 IN 1..nbreElement LOOP
			IF (tabTemp(cpt2) = tabGest(cpt3)) THEN		/*comparaison de chaque matricule des deux tableaux*/
			UPDATE GESTOR SET 	(GESTOR.nom_gest := TEMP.nom_gest,
								GESTOR.prenom_gest := TEMP.prenom_gest,
								GESTOR.secteur_gest := TEMP.secteur_gest,
								GESTOR.code_gest := TEMP.code_gest,
								GESTOR.secteur1_gest := TEMP.secteur1_gest,
								GESTOR.codeSecteur_gest := TEMP.codeSecteur_gest,
								GESTOR.codeInc_gest := TEMP.codeInc_gest,
								GESTOR.codeID_gest := TEMP.codeID_gest,
								GESTOR.codeNom_gest := TEMP.codeNom_gest,
								GESTOR.dateEmbauche_gest := TEMP.dateEmbauche_gest)
			WHERE tabGest(cpt2) = tabTemp(cpt3);
			ELSE
				INSERT INTO GESTOR VALUES (TEMP.matr_gest,TEMP.nom_gest,TEMP.prenom_gest,TEMP.secteur_gest,TEMP.code_gest,TEMP.groupe_gest,TEMP.secteur1_gest,TEMP.codeSecteur_gest,TEMP.codeInc_gest,TEMP.codeID_gest,TEMP.codeNom_gest,TEMP.dateEmbauche_gest);
			END IF;
			cpt3 := cpt3 + 1;
		END LOOP;
		cpt2 := cpt2 + 1;
	END LOOP;
 
	CLOSE lectGest;		/*fermeture du curseur*/
	CLOSE lectTemp;
 
END; | 
Partager