From bb432e1dc6e909c4bbcd9c1142b88a7f7b07aee0 Mon Sep 17 00:00:00 2001 From: pascal Date: Sun, 7 Mar 2021 20:46:06 +0100 Subject: [PATCH] exo3 --- EXOS/Exam2020-all.tex | 2 +- EXOS/exo3-PL.sql | 65 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 EXOS/exo3-PL.sql diff --git a/EXOS/Exam2020-all.tex b/EXOS/Exam2020-all.tex index 93220bc..ab7bf48 100644 --- a/EXOS/Exam2020-all.tex +++ b/EXOS/Exam2020-all.tex @@ -713,7 +713,7 @@ Nombre de joueurs à prévenir : nb \fbox{ \BUseVerbatim{AffichagePL}} \end{center} -%\lstinputlisting{exo3-PL.sql} +\lstinputlisting{exo3-PL.sql} \end{exercice} diff --git a/EXOS/exo3-PL.sql b/EXOS/exo3-PL.sql new file mode 100644 index 0000000..7865a74 --- /dev/null +++ b/EXOS/exo3-PL.sql @@ -0,0 +1,65 @@ +drop table tresultat purge; +create table tresultat(ligne varchar2(200)); +variable vnumcreneau varchar2(10) +prompt num creneau ? +accept vnumcreneau + +declare +dnumCreneau varchar2(10):='&vnumcreneau'; +didReserv char(3); +dnom varchar2(20); +ddateReserv date; +dnumCreneau char(2); +dmessage varchar2(200); +inexistant exception; +probleme exception; +dcpt number; +dnb number:=0; +cursor CUR is select idReserv, dateReserv + from reservation R + where numCreneau=dnumCreneau + order by 2; + +cursor CURJOUEUR is select Nom + from Faire F, Joueur J + where F.idReserv=didReserv + and J.idjoueur=F.idjoueur; + order by 2; + +begin + dmessage:='num du creneau inexistant'; + select count(*) into dcpt + from creneau + where numCreneau=dnumCreneau; + if dcpt=0 + then raise inexistant; + else + open CUR; + fetch cur into didReserv, ddateReserv; + + while cur%FOUND + loop + insert into tresultat values('Id reservation:'||didReserv||' Date :'||to_char(ddateReserv)); + open CURJ; + fetch curJ into dnom; + while CURJ%FOUND + loop + insert into tresultat values (dnom); + dnb:=dnb+1; + fetch curJ into dnom; + end loop; + close CURJ; + end loop; + close CUR; + insert into tresultat values ('Nombre de joueurs a prevenir : '||to_char(dnb)); + end if; + exception + when inexistant then insert into tresultat values (dmessage); + when probleme then insert into tresultat values (dmessage); +end; +. +/ +select * from tresultat; + + +