From 2fd5605b1e5d6e2e80a1050d88367d34f4b9ee4e Mon Sep 17 00:00:00 2001 From: pascal Date: Sun, 7 Mar 2021 20:27:05 +0100 Subject: [PATCH] exo2 --- EXOS/Exam2020-all.tex | 2 +- EXOS/exo2-PL.sql | 53 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 EXOS/exo2-PL.sql diff --git a/EXOS/Exam2020-all.tex b/EXOS/Exam2020-all.tex index 7826438..93220bc 100644 --- a/EXOS/Exam2020-all.tex +++ b/EXOS/Exam2020-all.tex @@ -595,7 +595,7 @@ Messages à prévoir : \item nb réservations passées ont été supprimées \end{itemize} -%\lstinputlisting{exo2-PL.sql} +\lstinputlisting{exo2-PL.sql} \end{exercice} \begin{exercice}[MF3] (20 points) diff --git a/EXOS/exo2-PL.sql b/EXOS/exo2-PL.sql new file mode 100644 index 0000000..1f7cc09 --- /dev/null +++ b/EXOS/exo2-PL.sql @@ -0,0 +1,53 @@ +drop table tresultat purge; +create table tresultat(ligne varchar2(200)); + +variable vidterrain char(2); +prompt id terrain? +accept vidterrain + +declare +didterrain char(2):='&vidterrain'; +didReserv char(3); +ddateReserv date; +dmessage varchar2(200); +inexistant exception; +probleme exception; +dcpt number; +dcptReserv number; +begin + + dmessage:='terrain inconnu'; + select count(*) into dcpt + from terrain + where idterrain=didterrain; + if dcpt=0 + then raise inexistant; + else select count(*) into dcptReserv + from terrain T, reservation R + where T.idterrain=R.idterrain + and R.dateReserv >= sysdate; + dmessage:='Impossible, il existe des réservations faites par ce terrain pour aujourd''hui ou dans le futur'; + if dcptReserv>0 + then raise probleme; + else select count(*) into dcptReserv + from terrain T, reservation R + where T.idterrain=R.idterrain + and R.dateReserv < sysdate; + if dcptReserv>0 + then delete from reservation + where idterrain=didterrain; + insert into tresultat values(to_char(dcptReserv)||' action(s) de réservations faites dans le passé par ce terrain ont été supprimées'); + end if; + delete from terrain where idterrain=didterrain; + insert into tresultat values('terrain supprimé'); + commit; + end if; + end if; + exception + when inexistant then insert into tresultat values (dmessage); + when probleme then insert into tresultat values (dmessage); +end; +. +/ +select * from tresultat; +