Pascal Lafourcade 5 years ago
parent 2d87b92e00
commit 6ca4e069ee

@ -332,13 +332,111 @@ Date\_creation\\
\end{tikzpicture} \end{tikzpicture}
\end{center} \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. Le MLD ci-dessus stocke les donn\'ees des matchs NBA.
\begin{enumerate} \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 \item (10 points) \'Ecrire un code PL/SQL qui permet de saisir un
nouveau joueur en entrant les six champs n\'ecessaires. Lever une nouveau joueur en entrant les six champs n\'ecessaires. Lever une
exception la clef primaire saisie n'est pas valide. exception la clef primaire saisie n'est pas valide.
@ -592,98 +690,6 @@ set echo on;
%% \end{footnotesize} %% \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{enumerate}
\end{exercice} \end{exercice}

Loading…
Cancel
Save