Merge branch 'master' of gitlab.iut-clermont.uca.fr:palafour/bdplsqproc

master
Pascal Lafourcade 5 years ago
commit 7b3ba43202

@ -90,7 +90,7 @@
\begin{center} \begin{center}
NOM : \hfill Partiel \hfill~\\ NOM : \hfill Partiel \hfill~\\
PRENOM : \hfill 90 minutes, 80 points \hfill ~\\ PRENOM : \hfill 90 minutes, 90 points \hfill ~\\
GROUPE : \hfill Aucun document autoris\'e \hfill~\\ GROUPE : \hfill Aucun document autoris\'e \hfill~\\
\end{center} \end{center}
@ -101,14 +101,25 @@
\begin{enumerate} \begin{enumerate}
\item (3 points) Expliquer \`a quoi sert un curseur. \item (3 points) Expliquer \`a quoi sert un curseur.
\cache{Un curseur permet de r\'ecup\'erer des donn\'ees multiples.} \cache{Un curseur permet de r\'ecup\'erer des donn\'ees multiples.}
\item (5 points) Donner un exemple simple qui nest pas possible de \item (5 points) Donner un exemple simple de requ\^ete en
traiter sans un curseur, et expliquer pourquoi. \cache{Une pr\'ecisant la table utilis\'ee qui nest pas possible de traiter
requete qui renvoie plein de donn\'ees .} sans un curseur, et expliquer pourquoi. \cache{SELECT *
from ETUDIANTS
WHERE
Une requete qui
renvoie plein de donn\'ees.}
\item (12 points) Donner un exemple simple d'utilisation d'un curseur. \item (12 points) Donner un exemple simple d'utilisation d'un curseur.
\newsavebox\dd \newsavebox\dd
\begin{lrbox}{\dd} \begin{lrbox}{\dd}
\begin{minipage}{\textwidth} \begin{minipage}{\textwidth}
\begin{verbatim} \begin{verbatim}
SET echo off;
SET verify off;
SET feedback off;
DECLARE DECLARE
dnom VARCHAR2(100); dnom VARCHAR2(100);
CURSOR C SELECT nom from ETUDIANT WHERE age > 18; CURSOR C SELECT nom from ETUDIANT WHERE age > 18;
@ -124,6 +135,9 @@ CLOSE C;
END; END;
. .
/ /
SET echo on;
SET verify on;
SET feedback on;
\end{verbatim} \end{verbatim}
\end{minipage} \end{minipage}
\end{lrbox} \end{lrbox}
@ -138,27 +152,47 @@ END;
\ \\ \ \\
\begin{enumerate} \begin{enumerate}
\item (3 points) Expliquer ce qu'est une exception. \item (3 points) Expliquer ce qu'est une exception.
\cache{Une exception permet de r\'ealiser un traitement lors \cache{Une exception permet de r\'ealiser un traitement
qu'une erreur SQL se produit.}
lors qu'une erreur SQL se produit.
ou lorsque l utilisateur le decide}
\item (12 points) Donner un exemple de cr\'eation d'exception \code{MINEUR} \item (12 points) Donner un exemple de cr\'eation d'exception \code{MINEUR}
qui est lev\'ee si la table \code{ETUDIANT (NOM VARCHA2(100), AGE NUMBER);} contient au moins un mineur et affiche le nombre de mineurs. qui est lev\'ee si la table \code{ETUDIANT (NOM VARCHA2(100), AGE NUMBER);} contient au moins un mineur et affiche le nombre de mineurs.
\newsavebox\avecalter \newsavebox\avecalter
\begin{lrbox}{\avecalter} \begin{lrbox}{\avecalter}
\begin{minipage}{\textwidth} \begin{minipage}{\textwidth}
\begin{verbatim} \begin{verbatim}
SET echo off;
SET verify off;
SET feedback off;
DECLARE DECLARE
Dnbmineur Dnbmineur
MINEUR EXCEPTION MINEUR EXCEPTION
BEGIN BEGIN
SELECT count(*) into Dnbmineur FROM ETUDIANT WERE AGE < 18; SELECT count(*) into Dnbmineur
IF Dnbmineur > 0 THEN RAISE MINEUR FROM ETUDIANT
WERE AGE < 18;
IF Dnbmineur > 0
THEN RAISE MINEUR
END IF; END IF;
EXCEPTION EXCEPTION
WHEN MINEUR THEN WHEN MINEUR THEN
INSERT INTO tligne VALUES(); INSERT INTO tligne VALUES();
End;
END;
. .
/ /
SET echo on;
SET verify on;
SET feedback on;
\end{verbatim} \end{verbatim}
\end{minipage} \end{minipage}
\end{lrbox} \end{lrbox}
@ -298,14 +332,112 @@ 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 (15 points) \'Ecrire un code PL/SQL qui permet de saisir un \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 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.
@ -557,13 +689,11 @@ set echo on;
%% \BUseVerbatim{Allstar} %% \BUseVerbatim{Allstar}
%% \end{footnotesize} %% \end{footnotesize}
%% } %% }
\end{enumerate} \end{enumerate}
\end{exercice} \end{exercice}
\end{document} \end{document}

Loading…
Cancel
Save