From 59f06dd0cd457c567075de7d290426ca6484d472 Mon Sep 17 00:00:00 2001 From: pascal Date: Sun, 7 Mar 2021 21:56:43 +0100 Subject: [PATCH] ok --- EXOS/exo2-MF.sql | 10 +--------- EXOS/exo3-MF.sql | 30 +++++++++--------------------- EXOS/exo3-PB.sql | 47 +++++++++++++++++++++++++++++++++++++++++++++++ EXOS/exo4-MF.sql | 32 ++++++++++++++++++++++++++++++++ EXOS/exo4-PB.sql | 29 +++++++++++++++++++++++++++++ 5 files changed, 118 insertions(+), 30 deletions(-) create mode 100644 EXOS/exo3-PB.sql create mode 100644 EXOS/exo4-MF.sql create mode 100644 EXOS/exo4-PB.sql diff --git a/EXOS/exo2-MF.sql b/EXOS/exo2-MF.sql index 13ef888..cd9c36e 100644 --- a/EXOS/exo2-MF.sql +++ b/EXOS/exo2-MF.sql @@ -1,9 +1,3 @@ -drop table tresultat purge; -create table tresultat(ligne varchar2(200)); - -variable vidJoueur char(2); -prompt id joueur? -accept vidJoueur declare didJoueur char(2):='&vidJoueur'; @@ -49,9 +43,7 @@ begin when inexistant then insert into tresultat values (dmessage); when probleme then insert into tresultat values (dmessage); end; -. -/ -select * from tresultat; + diff --git a/EXOS/exo3-MF.sql b/EXOS/exo3-MF.sql index 2afb347..0bd53a8 100644 --- a/EXOS/exo3-MF.sql +++ b/EXOS/exo3-MF.sql @@ -1,28 +1,20 @@ -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; +inexistant exception; dcpt number; dnb number:=0; -cursor CUR is select C.numCreneau, heureDebut, idReserv, dateReserv +cursor cur is select 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; + order by 1,3; begin dmessage:='nom du sport inexistant'; select count(*) into dcpt @@ -31,30 +23,26 @@ begin if dcpt=0 then raise inexistant; else - open CUR; - fetch cur into dnumCreneau,dheureDebut, didReserv, ddateReserv; - + open cur; + fetch cur into dheureDebut, didReserv, ddateReserv; while cur%FOUND loop - insert into tresultat values('Numero creneau:'||dnumCreneau||' heure de début:'||to_char(dheureDebut)); + insert into tresultat values('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; + fetch cur into dheureDebut, didReserv, ddateReserv; end loop; end loop; - close CUR; + 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; + diff --git a/EXOS/exo3-PB.sql b/EXOS/exo3-PB.sql new file mode 100644 index 0000000..93bf801 --- /dev/null +++ b/EXOS/exo3-PB.sql @@ -0,0 +1,47 @@ + +declare +didTerrain char(3):='T03'; +didReserv char(3); +ddateReserv date; +dnom varchar2(20); +dancidReservation char(3); +dmessage varchar2(200); +inexistant exception; +dcpt number; +dnb number:=0; +cursor cur is select idReserv, dateReserv, nom + from reservation R, faire F, joueur J + where R.idReservation = F.idReservation + and J.idJoueur=F.idJoueur + and R.idTerrain=didTerrain + order by 2,3; +begin + dmessage:='id Terrain inexistant'; + select count(*) into dcpt + from terrain + where idTerrain=didTerrain; + if dcpt=0 + then raise inexistant; + else + open cur; + fetch cur into didReserv, ddateReserv, dnom; + while cur%FOUND + loop + insert into tresultat values('idReservation:'||didReservation||' date:'||to_char(ddateReserv, 'dd/mm/yy')); + dancidReservation:=didReservation; + while dancidReservation=didReservation and cur%FOUND + loop + insert into tresultat values (dnom); + dnb:=dnb+1; + fetch cur into didReserv, ddateReserv, dnom; + end loop; + end loop; + close cur; + insert into tresultat values ('Nombre de joueurs à prévenir : '||to_char(dnb)); + end if; + exception + when inexistant then insert into tresultat values (dmessage); +end; + + + diff --git a/EXOS/exo4-MF.sql b/EXOS/exo4-MF.sql new file mode 100644 index 0000000..36a628d --- /dev/null +++ b/EXOS/exo4-MF.sql @@ -0,0 +1,32 @@ + +declare +dnomSport varchar(10); +didReserv char(5); +dheureDebut number; +dduree number; +dtarifHoraire number; +dcout number; + +cursor CUR is select idReserv, heureDebut, duree, tarifHoraire, duree*tarifHoraire + from creneau C, reservation R, terrain T, sport S, facturer F + where S.nomSport = F.nomsport + and S.nomSport=T.nomSport + and T.idTerrain=R.idTerrain + and R.numCreneau=C.numCreneau + and F.numCreneau=C.numCreneau + order by 5 desc; +begin + + open CUR; + fetch CUR into didReserv, dheureDebut, dduree, dtarifHoraire, dcout; + while CUR%FOUND + loop + insert into tresultat values('Id reservation:'||ddidReserv||' heure de début:'||to_char(dheureDebut)||' durée:'||to_char(dduree)||' tarif horaire:'|| + to_char(dtarifHoraire)||' cout du terrain:'||to_char(dcout)||'€'); + fetch CUR into didReserv, dheureDebut, dduree, dtarifHoraire, dcout; + end loop; + end loop; + close CUR; +end; + + diff --git a/EXOS/exo4-PB.sql b/EXOS/exo4-PB.sql new file mode 100644 index 0000000..ee48cde --- /dev/null +++ b/EXOS/exo4-PB.sql @@ -0,0 +1,29 @@ + +declare +didReserv char(5); +ddateReserv date; +dnb number; +dcpt number:=0; +dtotnb number:=0; +cursor CUR is select idReserv, count(*) + from faire + group by idReserv + order by 2; +begin + + open CUR; + fetch CUR into didReserv, dnb; + while CUR%FOUND + loop + select dateReserv into ddateReserv from reservation where idReservation=didReserv; + insert into tresultat values('Id reservation:'||ddidReserv||' date:'||to_char(ddateReserv,'dd/mm/yy')||' nombre de joueurs:'||to_char(dnb)); + dtotnb:=dtotnb+dnb; + dcpt:=dcpt+1; + fetch CUR into didReserv, dnb; + end loop; + end loop; + close CUR; + insert into tresultat values('Nombre de joueur moyen par réservation :'||to_char(dtotnb/dcpt)); +end; + +