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
|
CREATE OR REPLACE PROCEDURE maProcedure(numeroClasse in NUMBER) AS
v_nomEleve VARCHAR2(25);
v_prenomEleve VARCHAR2(25);
v_libelleMatiere VARCHAR2(25);
v_MatCourante VARCHAR2(25);
v_NomCourant VARCHAR2(25);
v_total NUMBER;
v_moyenne NUMBER(4,2);
v_nbr NUMBER;
v_note NUMBER;
CURSOR monCurseur
IS SELECT e.nomEleve, n.note, m.libelleMatiere
FROM eleves e, notes n, matieres m, evaluations ev, classes c
WHERE e.numeleve=ev.numeleve
AND n.numnote=ev.numnote
AND m.nummatiere=ev.nummatiere
AND c.numClasse=ev.numClasse
AND c.numClasse=numeroClasse
ORDER BY e.nomEleve, m.libelleMatiere ASC;
BEGIN
OPEN monCurseur;
v_nbr:=0;
v_total:=0;
v_note:=0;
FETCH monCurseur INTO v_nomEleve, v_note, v_libelleMatiere;
WHILE (monCurseur%FOUND)
LOOP
v_MatCourante:=v_libelleMatiere;
v_NomCourant:=v_nomEleve;
WHILE((monCurseur%FOUND)AND(v_MatCourante=v_libelleMatiere)AND(v_NomCourant=v_nomEleve))
LOOP
v_nbr:=v_nbr+1;
v_total:=v_total+v_note;
fetch monCurseur INTO v_nomEleve, v_note, v_libelleMatiere;
END LOOP;
v_moyenne:=v_total/v_nbr;
INSERT INTO BILAN (nom,matiere,moyenne) VALUES (v_NomCourant,v_MatCourante,v_moyenne);
END LOOP;
CLOSE monCurseur;
END;
/ |
Partager