Pascal Lafourcade 5 years ago
parent 2d87b92e00
commit 6ca4e069ee

@ -332,13 +332,111 @@ Date\_creation\\
\end{tikzpicture}
\end{center}
\newpage
\begin{exercice}[NBA, PLSQL] (45 points)
\begin{exercice}[NBA, PLSQL] (60 points)
Le MLD ci-dessus stocke les donn\'ees des matchs NBA.
\begin{enumerate}
\item (20 points) Lister dans une table \code{TLIGNES} tous les
joueurs d'un \'equipe donn\'ee par l'utilisateur et d'une ann\'ee,
afficher leur nom, pr\'enom, poste et le nombres de match o\`u il a
fait 0, 1, 2, 3, 4 ou 5 fautes, durant cette ann\'ee civile :
\begin{center}
\begin{small}
\begin{verbatim}
EQUIPE XXX
Nom Prenom Poste
XXXXXX XXXXXXX XXXXXX
Fautes Nb Matchs
0 YYY
1 YYY
2 YYY
3 YYY
4 YYY
5 YYY
XXXXXX XXXXXXX XXXXXX
Fautes Nb Matchs
0 YYY
1 YYY
2 YYY
3 YYY
4 YYY
5 YYY
\end{verbatim}
\end{small}
\end{center}
\begin{SaveVerbatim}{eqpts}
variable equipe char(4)
prompt Entrer une equipe
accept vequipe
variable vannee number
prompt Entrer une annee
accept vannee
DECLARE
dnom varchar2(20);
dprenom varchar2(20);
dposte char(2);
didjoueur NUMNER;
dnbfautes number;
dcpt number;
CURSOR Cnom IS SELECT j.idjoueur, j.Nom, j.Prenom, j.Poste FROM JOUEUR j,
JOUE e, MATCH m WHERE j.id_joueur = e.id_joueur and id
AND ( m.Date_Match > TO_DATE('01/01/'||'&vannee',DD/MM/YYYY) AND
m.Date_Match < TO_DATE('12/31/'||'&vannee',DD/MM/YYYY) );
CURSOR Cfaute IS SELECT COUNT(ID_match) FROM JOUE
WHERE id_joueur = didjoueur
GROUP BY FAUTES;
BEGIN
INSERT INTO tligne VALUES (EQUIPE'||'&vequipe');
INSERT INTO tligne VALUES ('Nom Prenom Poste');
OPEN Cnom;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
WHILE Cnom%found LOOP
INSERT INTO tligne VALUES (dnom||' '||dprenom||' '||dposte);
OPEN Cfaute;
dcpt:=0;
INSERT INTO tligne VALUES (Faute Nn Matchs);
FETCH Cfaute INTO dnbfaute;
WHILE Couest%found LOOP
INSERT INTO tligne VALUES (dcpt||' '||dnbfaute);
dcpt:=dcpt+1;
FETCH Cfaute INTO dnbfaute;
END LOOP;
CLOSE Cfaute;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
END LOOP;
CLOSE Cnom;
END;
.
/
SELECT * FROM tligne ;
\end{SaveVerbatim}
\cache{\begin{footnotesize}
\BUseVerbatim{eqpts}
\end{footnotesize}
}
\newpage
\item (10 points) \'Ecrire un code PL/SQL qui permet de saisir un
nouveau joueur en entrant les six champs n\'ecessaires. Lever une
exception la clef primaire saisie n'est pas valide.
@ -592,98 +690,6 @@ set echo on;
%% \end{footnotesize}
%% }
\item (20 points) Lister dans une table \code{TLIGNES} tous les
joueurs d'un \'equipe donn\'ee par l'utilisateur et d'une ann\'ee,
afficher leur nom, pr\'enom, poste et le nombres de match o\`u il a
fait 0, 1, 2, 3, 4 ou 5 fautes, durant cette ann\'ee civile :
\begin{center}
\begin{small}
\begin{verbatim}
EQUIPE XXX
Nom Prenom Poste
XXXXXX XXXXXXX XXXXXX 0
Fautes Nb Matchs
0 YYY
1 YYY
2 YYY
3 YYY
4 YYY
5 YYY
XXXXXX XXXXXXX XXXXXX 0
Fautes Nb Matchs
0 YYY
1 YYY
2 YYY
3 YYY
4 YYY
5 YYY
\end{verbatim}
\end{small}
\end{center}
\begin{SaveVerbatim}{eqpts}
variable equipe char(4)
prompt Entrer une equipe
accept vequipe
variable vannee number
prompt Entrer une annee
accept vannee
DECLARE
dnom varchar2(20);
dprenom varchar2(20);
dposte char(2);
didjoueur NUMNER;
dnbfautes number;
dcpt number;
CURSOR Cnom IS SELECT j.idjoueur, j.Nom, j.Prenom, j.Poste FROM JOUEUR j,
JOUE e, MATCH m WHERE j.id_joueur = e.id_joueur and id
AND ( m.Date_Match > TO_DATE('01/01/'||'&vannee',DD/MM/YYYY) AND
m.Date_Match < TO_DATE('12/31/'||'&vannee',DD/MM/YYYY) );
CURSOR Cfaute IS SELECT COUNT(ID_match) FROM JOUE
WHERE id_joueur = didjoueur
GROUP BY FAUTES;
BEGIN
INSERT INTO tligne VALUES (EQUIPE'||'&vequipe');
INSERT INTO tligne VALUES ('Nom Prenom Poste');
OPEN Cnom;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
WHILE Cnom%found LOOP
INSERT INTO tligne VALUES (dnom||' '||dprenom||' '||dposte);
OPEN Cfaute;
dcpt:=0;
INSERT INTO tligne VALUES (Faute Nn Matchs);
FETCH Cfaute INTO dnbfaute;
WHILE Couest%found LOOP
INSERT INTO tligne VALUES (dcpt||' '||dnbfaute);
dcpt:=dcpt+1;
FETCH Cfaute INTO dnbfaute;
END LOOP;
CLOSE Cfaute;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
END LOOP;
CLOSE Cnom;
END;
.
/
SELECT * FROM tligne ;
\end{SaveVerbatim}
\cache{\begin{footnotesize}
\BUseVerbatim{eqpts}
\end{footnotesize}
}
\end{enumerate}
\end{exercice}

Loading…
Cancel
Save