Vous êtes sur la page 1sur 2

Correction de « Exercice sur google classroom » :

Soit la base de données suivante :

Ecrire un programme PL/SQL qui affiche pour chaque stagiaire (son numéro est
demandé à l’utilisateur):

 Son nom, son prénom et sa filière sous la forme :


Nom et Prénom :.....Filière : .......

 Afficher la liste des modules suivis par le stagiaire (relatives à sa filière) sous
la forme : Module :..... Coefficient :..... note : ....... (S'il existe un module où le
stagiaire a obtenu une note <5, arrêtez le traitement et afficher 'Note
Eliminatoire')

 Afficher la moyenne générale du stagiaire (son calcul pourrait être effectué


au fur et à mesure de l’affichage des notes du stagiaire).

La moyenne générale est égale à : (Somme(Note * Coefficient) / Somme


(Coefficient)).

1
DECLARE
numStagiaire Stagiaire.NumStagiaire%TYPE;
nomStagiaire Stagiaire.NomStagiaire%TYPE;
PrenomStagiaire Stagiaire.PrenomStagiaire%TYPE;
NomFiliere Filiere.NomFiliere %TYPE;
SommeNotes Notation.Note %TYPE;
SommeCoefficients Coefficient.Programme%TYPE;
Moyenne Number(4,2);
note_eliminatoire EXCEPTION;
BEGIN
numStagiaire := &numéro_ Stagiaire;
SELECT NomStagiaire, PrenomStagiaire, NomFiliere
INTO NomStagiaire, PrenomStagiaire, NomFiliere
FROM Stagiaire S, Filiere F
WHERE S.NumFiliere = F.NumFiliere
and S.NumStagiaire = NumStagiaire;
DBMS_OUTPUT.PUT_LINE(‘Nom et Prénom :’|| NomStagiaire
|| PrenomStagiaire || ‘Filière :’ || NomFiliere);
FOR c IN (SELECT NomModule, Coefficient, Note
FROM Stagiaire S, Programme P, Module M, Notation N
WHERE S.NumFiliere = P.NumFiliere
And P.NumModule = M.NumModule
And M.NumModule = N.NumModule
And N.NumStagiaire = NumStagiaire) LOOP
If c.Note < 5 Then RAISE note_eliminatoire;
Else DBMS_OUTPUT.PUT_LINE(‘Module :’ || c.NomModule ||
‘Coefficient :’ || c.Coefficient || ‘note :’ || c.Note);
SommeNotes = SommeNotes + c.Note * c.Coefficient;
SommeCoefficients = SommeCoefficients + c.Coefficient;
End if
END LOOP;
Moyenne = SommeNotes / SommeCoefficients ;
DBMS_OUTPUT.PUT_LINE(‘Moyenne générale :’ || Moyenne);
EXCEPTION
WHEN note_eliminatoire THEN
DBMS_OUTPUT.PUT_LINE(‘Note Eliminatoire’);
END;

Vous aimerez peut-être aussi