From 6e5d05fa416b79d7211c58a1ae85a88d370f4e0a Mon Sep 17 00:00:00 2001 From: Pascal Lafourcade Date: Fri, 14 Feb 2020 08:36:24 +0100 Subject: [PATCH 1/6] space --- EXOS/Partiel2020.tex | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/EXOS/Partiel2020.tex b/EXOS/Partiel2020.tex index f38930e..7150847 100644 --- a/EXOS/Partiel2020.tex +++ b/EXOS/Partiel2020.tex @@ -101,14 +101,25 @@ \begin{enumerate} \item (3 points) Expliquer \`a quoi sert un curseur. \cache{Un curseur permet de r\'ecup\'erer des donn\'ees multiples.} - \item (5 points) Donner un exemple simple qui n’est pas possible de - traiter sans un curseur, et expliquer pourquoi. \cache{Une - requete qui renvoie plein de donn\'ees .} + \item (5 points) Donner un exemple simple de requ\^ete en + pr\'ecisant la table utilis\'ee qui n’est pas possible de traiter + 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. \newsavebox\dd \begin{lrbox}{\dd} \begin{minipage}{\textwidth} \begin{verbatim} +SET echo off; +SET verify off; +SET feedback off; DECLARE dnom VARCHAR2(100); CURSOR C SELECT nom from ETUDIANT WHERE age > 18; @@ -124,6 +135,9 @@ CLOSE C; END; . / +SET echo on; +SET verify on; +SET feedback on; \end{verbatim} \end{minipage} \end{lrbox} From 87732b4d71d8ffa316bc2ff6c08204e01d43e6af Mon Sep 17 00:00:00 2001 From: Pascal Lafourcade Date: Fri, 14 Feb 2020 08:38:02 +0100 Subject: [PATCH 2/6] debut --- EXOS/Partiel2020.tex | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/EXOS/Partiel2020.tex b/EXOS/Partiel2020.tex index 7150847..fb1d924 100644 --- a/EXOS/Partiel2020.tex +++ b/EXOS/Partiel2020.tex @@ -152,8 +152,11 @@ SET feedback on; \ \\ \begin{enumerate} \item (3 points) Expliquer ce qu'est une exception. - \cache{Une exception permet de r\'ealiser un traitement lors - qu'une erreur SQL se produit.} + \cache{Une exception permet de r\'ealiser un traitement + + 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} 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 From 27cde58de92357afa7a8440bf6c031345e82b232 Mon Sep 17 00:00:00 2001 From: Pascal Lafourcade Date: Fri, 14 Feb 2020 08:39:53 +0100 Subject: [PATCH 3/6] space --- EXOS/Partiel2020.tex | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/EXOS/Partiel2020.tex b/EXOS/Partiel2020.tex index fb1d924..9cd99d8 100644 --- a/EXOS/Partiel2020.tex +++ b/EXOS/Partiel2020.tex @@ -163,19 +163,36 @@ SET feedback on; \begin{lrbox}{\avecalter} \begin{minipage}{\textwidth} \begin{verbatim} + +SET echo off; +SET verify off; +SET feedback off; + DECLARE Dnbmineur MINEUR EXCEPTION + BEGIN -SELECT count(*) into Dnbmineur FROM ETUDIANT WERE AGE < 18; -IF Dnbmineur > 0 THEN RAISE MINEUR +SELECT count(*) into Dnbmineur +FROM ETUDIANT +WERE AGE < 18; + +IF Dnbmineur > 0 +THEN RAISE MINEUR END IF; + EXCEPTION WHEN MINEUR THEN INSERT INTO tligne VALUES(); -End; + +END; + . / + +SET echo on; +SET verify on; +SET feedback on; \end{verbatim} \end{minipage} \end{lrbox} From 15966fa4f3db02a68a0cbe5d4f6c7843c55f930f Mon Sep 17 00:00:00 2001 From: Pascal Lafourcade Date: Fri, 14 Feb 2020 09:13:44 +0100 Subject: [PATCH 4/6] double --- EXOS/Partiel2020.tex | 93 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 2 deletions(-) diff --git a/EXOS/Partiel2020.tex b/EXOS/Partiel2020.tex index 9cd99d8..ebeef26 100644 --- a/EXOS/Partiel2020.tex +++ b/EXOS/Partiel2020.tex @@ -591,12 +591,101 @@ set echo on; %% \BUseVerbatim{Allstar} %% \end{footnotesize} %% } -\end{enumerate} -\end{exercice} +\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 ('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} From 2d87b92e009a34a17b18e5bd0fc73cb04538ccdb Mon Sep 17 00:00:00 2001 From: Pascal Lafourcade Date: Fri, 14 Feb 2020 09:15:42 +0100 Subject: [PATCH 5/6] equipe --- EXOS/Partiel2020.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/EXOS/Partiel2020.tex b/EXOS/Partiel2020.tex index ebeef26..8274335 100644 --- a/EXOS/Partiel2020.tex +++ b/EXOS/Partiel2020.tex @@ -90,7 +90,7 @@ \begin{center} 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~\\ \end{center} @@ -339,7 +339,7 @@ Le MLD ci-dessus stocke les donn\'ees des matchs NBA. \begin{enumerate} -\item (15 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 exception la clef primaire saisie n'est pas valide. @@ -650,6 +650,7 @@ 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; From 6ca4e069ee2f7a9be495f2e1e34679edc8e7793f Mon Sep 17 00:00:00 2001 From: Pascal Lafourcade Date: Fri, 14 Feb 2020 09:19:58 +0100 Subject: [PATCH 6/6] ok --- EXOS/Partiel2020.tex | 194 ++++++++++++++++++++++--------------------- 1 file changed, 100 insertions(+), 94 deletions(-) diff --git a/EXOS/Partiel2020.tex b/EXOS/Partiel2020.tex index 8274335..58c7b2d 100644 --- a/EXOS/Partiel2020.tex +++ b/EXOS/Partiel2020.tex @@ -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}