Pascal LAFOURCADE 4 years ago
parent 669e8d0620
commit 2881606ce3

@ -522,6 +522,8 @@ Messages à prévoir :
\item Le libellé doit être unique
\item Léquipement a été enregistré : Libellé
\end{itemize}
% \lstinputlisting{exo1-FG.sql}
\end{exercice}
\begin{exercice}[PL1] (10 points)
@ -534,6 +536,8 @@ Messages à prévoir :
\item L'heure de d\'ebut est d\'ej\`a attribu\'ee
\item L'heure de d\'ebut doit \^etre comprise entre 9h et 17h
\end{itemize}
% \lstinputlisting{exo1-PL.sql}
\end{exercice}
\begin{exercice}[MF2] (15 points)
@ -588,6 +592,8 @@ Messages à prévoir :
\item Des réservations en cours ou à venir utilisent cet équipement
\item nb réservations passées ont été supprimées
\end{itemize}
%\lstinputlisting{exo2-PL.sql}
\end{exercice}
\begin{exercice}[MF3] (20 points)
@ -618,7 +624,7 @@ Nombre de réservations total pour ce sport : nb
%\end{small}
% }
\lstinputlisting{exo3-MF.sql}
\end{exercice}
@ -648,7 +654,7 @@ Nombre de réservations sans équipement : nb
%\end{small}
% }
% \lstinputlisting{exo3-PB.sql}
\end{exercice}
@ -704,6 +710,8 @@ Nombre de joueurs à prévenir : nb
\fbox{ \BUseVerbatim{AffichagePL}}
\end{center}
%\lstinputlisting{exo3-PL.sql}
\end{exercice}
@ -726,6 +734,8 @@ Id. réserv: XXXXX heure début : X durée : X tarif horaire : 99 Coût terr
\end{small}
}
\end{center}
% \lstinputlisting{exo4-MF.sql}
\end{exercice}
\begin{exercice}[PB4] (20 points)
@ -748,6 +758,8 @@ Nombre de joueur moyen par réservation : 999
\end{small}
}
\end{center}
%\lstinputlisting{exo4-PB.sql}
\end{exercice}
\begin{exercice}[FG4] (20 points)
@ -790,6 +802,7 @@ NumCreneau: XXXXX heure début : X Benefice :9999€ nb joueurs : 9999
\end{small}
}
\end{center}
%\lstinputlisting{exo4-PL.sql}
\end{exercice}

@ -0,0 +1,55 @@
drop table tresultat purge;
create table tresultat(ligne varchar2(200));
variable vnomsport varchar2(10)
prompt nom du sport?
accept vnomsport
variable vnbMinJoueurs number
prompt nombre minimum?
accept vnbMinJoueurs
variable vnbMaxJoueurs number
prompt nombre maximum?
accept vnbMaxJoueurs
variable vduree number
prompt duree?
accept vduree
declare
dnomSport varchar2(10):='&vnomsport';
dnbMinJoueurs number:='&vnbMinJoueurs';
dnbMaxJoueurs number:='&vnbMaxJoueurs';
dduree number:='&vduree';
dmessage varchar2(200);
probleme exception;
dcpt number;
begin
dmessage:='ERREUR: nom du sport déjà attribué';
select count(*) into dcpt
from sport
where nomSport=dnomSport;
if dcpt=1
then insert into tresultat values (dmessage);
else dmessage:='Le nombre maximum de joueurs doit être supérieur au nombre minimum';
if dnbMaxJoueurs < dnbMinJoueurs
then raise probleme;
else dmessage:='La durée est de 1h ou 2h';
if dduree =1 or dduree =2
then
insert into sport values(dnomSport, dnbMinJoueurs, dnbMaxJoueurs, dduree);
commit;
insert into tresultat values ('Le sport a été enregistré :'|| dnomSport);
else raise probleme;
end if;
end if;
end if;
exception
when probleme then insert into tresultat values (dmessage);
end;
.
/
select * from tresultat;

@ -0,0 +1,68 @@
drop table tresultat purge;
create table tresultat(ligne varchar2(200));
variable vidReserv char(3)
prompt id Reservation?
accept vidReserv
variable vdateReserv char(9)
prompt date reservation?
accept vdateReserv
variable vnbJoueurs number
prompt nombre joueurs?
accept vnbJoueurs
variable vidTerrain char(5)
prompt id Terrain?
accept vidTerrain
variable vnumCreneau char(2)
prompt num Creneau?
accept vnumCreneau
declare
didReserv char(3):='&vidReserv';
ddateReserv date:=to_date('&vdateReserv', 'dd-mon-yy');
dnbJoueurs number:=&vnbJoueurs;
didTerrain char(5):='&vidTerrain';
dnumCreneau char(2):='&vnumCreneau';
dmessage varchar2(200);
probleme exception;
dcpt number;
begin
dmessage:='ERREUR: id réservation déjà attribué';
select count(*) into dcpt
from reservation
where idReserv=didReserv;
if dcpt=1
then insert into tresultat values (dmessage);
else dmessage:='La date de réservation doit être postérieure à la date du jour';
if ddateReserv < sysdate
then raise probleme;
else dmessage:='l''identifiant du terrain est inconnu';
select count(*) into dcpt
from terrain
where idTerrain=didTerrain;
id dcpt=0 then raise probleme;
else
dmessage:='l''identifiant du créneau est inconnu';
select count(*) into dcpt
from creneau
where numCreneau=dnumCreneau;
id dcpt=0 then raise probleme;
else
insert into reservation values(didReserv, ddateReserv, dnbJoueurs, didTerrain, dnumCreneau);
commit;
insert into tresultat values ('La réservation a été enregistrée :');
end if;
end if;
end if;
exception
when probleme then insert into tresultat values (dmessage);
end;
.
/
select * from tresultat;

@ -0,0 +1,57 @@
drop table tresultat purge;
create table tresultat(ligne varchar2(200));
variable vidJoueur char(2);
prompt id joueur?
accept vidJoueur
declare
didJoueur char(2):='&vidJoueur';
didReserv char(3);
ddateReserv date;
dmessage varchar2(200);
inexistant exception;
probleme exception;
dcpt number;
dcptReserv number;
begin
dmessage:='joueur inconnu';
select count(*) into dcpt
from joueur
where idJoueur=didJoueur;
if dcpt=0
then raise inexistant;
else select count(*) into dcptReserv
from faire F, reservation R
where F.idReserv=R.idReserv
and F.idJoueur=didJoueur
and R.dateReserv >= sysdate;
dmessage:='Impossible, il existe des réservations faites par ce joueur pour aujourd''hui ou dans le futur';
if dcptReserv>0
then raise probleme;
else select count(*) into dcptReserv
from faire F, reservation R
where F.idReserv=R.idReserv
and F.idJoueur=didJoueur
and R.dateReserv < sysdate;
if dcptReserv>0
then delete from faire
where idJoueur=didJoueur;
insert into tresultat values(to_char(dcptReserv)||' action(s) de réservations faites dans le passé par ce joueur ont été supprimées');
end if;
delete from joueur where idJoueur=didJoueur;
insert into tresultat values('joueur 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;

@ -0,0 +1,39 @@
declare
didEquip char(2):='&vidEquip';
didReserv char(3);
dmessage varchar2(200);
inexistant exception;
dcpt number;
dcptReserv number;
cursor R is select idReservation from reservation R, contenir C where R.idReservation=C.idReservation
and dateReserv>='01-mar-21' and dateReserv<='31-mar-21' and C.idEquipement=didEquip;
begin
dmessage:='l''identifiant de l''equipement est inconnu';
select count(*) into dcpt
from equipement
where idEquipement=didEquip;
if dcpt=0
then raise inexistant;
else dcptReserv:=0;
open R;
fetch R into didReservation;
while R%found
loop
delete from contenir
where idReservation=didReservation;
delete from faire
where idReservation = didReservation;
delete from reservation where idReservation= didReservation;
dcptReserv:=dcptReserv+1;
fetch R into didReservation;
end loop;
close R;
insert into tresultat values(to_char(dcptReserv)||' réservations ont été supprimées');
commit;
end if;
exception
when inexistant then insert into tresultat values (dmessage);
end;

@ -0,0 +1,60 @@
drop table tresultat purge;
create table tresultat(ligne varchar2(200));
variable vnomsport varchar2(10)
prompt nom du sport?
accept vnomsport
declare
dnomSport varchar2(10):='&vnomsport';
didReserv char(3);
ddateReserv date;
dheureDebut number;
dnumCreneau char(2);
dancienheureDebut char(3);
dmessage varchar2(200);
inexistant exception;
probleme exception;
dcpt number;
dnb number:=0;
cursor CUR is select C.numCreneau, heureDebut, idReserv, dateReserv
from creneau C, reservation R, terrain T, sport S
where S.nomSport = dnomSport
and S.nomSport=T.nomSport
and T.idTerrain=R.idTerrain
and R.numCreneau=C.numCreneau
order by 2,4;
begin
dmessage:='nom du sport inexistant';
select count(*) into dcpt
from sport
where nomSport=dnomSport;
if dcpt=0
then raise inexistant;
else
open CUR;
fetch cur into dnumCreneau,dheureDebut, didReserv, ddateReserv;
while cur%FOUND
loop
insert into tresultat values('Numero creneau:'||dnumCreneau||' heure de début:'||to_char(dheureDebut));
dancienheureDebut:=dheureDebut;
while dancienheureDebut=dheureDebut and cur%FOUND
loop
insert into tresultat values (didReserv||' date:'||ddateReserv);
dnb:=dnb+1;
fetch cur into dnumCreneau, dheureDebut, didReserv, ddateReserv;
end loop;
end loop;
close CUR;
insert into tresultat values ('Nombre de réservations total pour ce sport : '||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;
Loading…
Cancel
Save