Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Ecrire un programme PL/SQL qui affiche pour chaque stagiaire (son numéro est
demandé à l’utilisateur):
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')
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;