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 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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| CREATE OR REPLACE PROCEDURE AfficherMentions AS
/*-------------------------------------------------------------------
Script : AfficherMentions.prc
Auteur : G***
Année : ESIG1 2010-2011
Date : 23.06.2011
Projet : Université Rotshield (BDD Phase II)
---------------------------------------------------------------------
-- Affiche le nombre d'élèves
-- Affiche les notes que possèdent chaques élèves
-- Affiche la moyenne de l'élève
-- Affiche la situation de l'élève
-- Affiche le nombre d'élèves promus
-- Affiche le nombre d'élèves non-promus
-- Affiche le nombre d'élèves promus avec mention "TRES BIEN"
-- Affiche le nombre d'élèves promus avec mention "BIEN"
-------------------------------------------------------------------*/
-- Déclaration des curseurs
CURSOR cuEleve IS
SELECT * FROM ELEVE e
ORDER BY e.ElvNom;
CURSOR cuExamen(pNumEleve IN EXAMEN.ExaElvNum%TYPE) IS
SELECT * FROM EXAMEN
WHERE ExaElvNum = pNumEleve;
-- Déclaration des variables
vEleve cuEleve%ROWTYPE;
vExamen cuExamen%ROWTYPE;
vPosExamen INTEGER;
vNbEleves INTEGER;
-- Déclaration des exceptions
eAucunEleve EXCEPTION;
eAucunExamen EXCEPTION;
BEGIN
vNbEleves := 0;
OPEN cuEleve;
FETCH cuEleve INTO vEleve;
IF cuEleve%NOTFOUND THEN RAISE eAucunEleve;
END IF;
dbms_output.put(' UNIVERSITE ROTSHIELD GENEVE');
dbms_output.new_line;
dbms_output.put('-----------------------------------------------------------------------');
dbms_output.new_line;
dbms_output.put('INFORMATIONS RELATIVES AUX EXAMENS ET A LA SITUATION DE CHAQUES ELEVES:');
dbms_output.new_line;
dbms_output.put('-----------------------------------------------------------------------');
dbms_output.new_line;
WHILE cuEleve%FOUND LOOP
vPosExamen := 0;
vNbEleves := vNbEleves + 1;
dbms_output.put('PRENOM: ');
dbms_output.put(vEleve.ElvPrenom);
dbms_output.new_line;
dbms_output.put('NOM: ');
dbms_output.put(vEleve.ElvNom);
dbms_output.new_line;
dbms_output.new_line;
dbms_output.put('Examens de l élève:');
dbms_output.new_line;
OPEN cuExamen(vEleve.ElvNum);
FETCH cuExamen INTO vExamen;
IF cuExamen%NOTFOUND THEN RAISE eAucunExamen;
END IF;
WHILE cuExamen%FOUND LOOP
vPosExamen := vPosExamen + 1;
dbms_output.put(vPosExamen);
dbms_output.put('. ');
dbms_output.put(vExamen.ExaNoteObt);
dbms_output.new_line;
FETCH cuExamen INTO vExamen;
END LOOP;
dbms_output.put('-----------------------------------------------------------------------');
dbms_output.new_line;
CLOSE cuExamen;
FETCH cuEleve INTO vEleve;
END LOOP;
CLOSE cuEleve;
dbms_output.put('--------------------------');
dbms_output.new_line;
dbms_output.put('NOMBRE TOTAL D ELEVES: ');
dbms_output.put(vNbEleves);
dbms_output.new_line;
dbms_output.put('--------------------------');
dbms_output.new_line;
EXCEPTION
WHEN eAucunEleve THEN
dbms_output.new_line;
dbms_output.put_line('Aucun Eleve !');
WHEN eAucunExamen THEN
dbms_output.new_line;
dbms_output.put_line('Aucun Examen !');
END AfficherMentions; |
Partager