Problème d'affichage d'un attribut sur jointure
Salut à tous!
Je vous explique mon souci. Il est que je n'arrive pas a afficher le nom de la matière (MATIERE.MatNom) correspondant au numéro d'examen (EXAMEN.ExaMatNum) dans une boucle imbriquée d'un curseur ayant reçu en paramètre un numéro d'élève.
J'aimerais que la ligne de code affichant la matière correspondant à l'examen s'introduise entre la ligne 71 et 72.
Je sais pas si j'ai été suffisamment claire. Merci d'avance pour votre aide.
Et au passage... a-t-il été vraiment nécessaire que je crée un curseur pour le parcours des élèves?
Code:
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; |