Pascal LAFOURCADE 4 years ago
parent 8ac6c44ce9
commit b0d63a09b5

@ -0,0 +1,58 @@
drop table tresultat purge;
create table tresultat(ligne varchar2(200));
variable vidEquipement char(3)
prompt id de l'équipement
accept vidEquipement
variable vtarif number
prompt le tarif de l'équipement ?
accept vtarif
variable vlibelle VARCHAR2(20)
prompt libellé équipement ?
accept vlibelle
DECLARE
dmessage varchar2(200);
probleme exception;
dcpt number;
BEGIN
dmessage := 'ERREUR: id équipement déjà attribué';
SELECT COUNT(*) INTO dcpt
FROM EQUIPEMENT
WHERE idEquipement = '&vidEquipement';
IF dcpt=1 THEN
INSERT INTO tresultat VALUES (dmessage);
ELSE
dmessage := 'ERREUR: Le tarif doit être supérieure à 0';
IF '&vtarif' <= 0 then
raise probleme;
ELSE
dmessage := 'ERREUR: le libellé de l''équipement doit être unique';
SELECT count(*) INTO dcpt
FROM EQUIPEMENT
WHERE libelle = '&vlibelle';
IF dcpt>0 then
raise probleme;
ELSE
INSERT INTO EQUIPEMENT VALUES ('&vidEquipement', '&vtarif', '&vlibelle');
COMMIT;
INSERT INTO tresultat VALUES ('L'équipement a été enregistré :' || '&vlibelle');
END IF;
END IF;
EXCEPTION
WHEN probleme then
INSERT INTO tresultat VALUES (dmessage);
END;
.
/
SELECT * FROM tresultat;

@ -0,0 +1,50 @@
DECLARE
dmessage varchar2(200);
inexistant exception;
dcpt number;
dcptReserv number;
BEGIN
dmessage := 'l''identifiant de l''equipement est inconnu';
SELECT COUNT(*) INTO dcpt
FROM equipement
WHERE idEquipement = '&videquip';
IF dcpt=0 THEN
RAISE inexistant;
ELSE
SELECT COUNT(*) INTO dcptReserv FROM CONTENIR con, RESERVATION res
WHERE con.idReserv = res.idReserv
AND dateReserv >= SYSDATE AND con.idEquipement = '&videquip';
dmessage := 'Des réservations en cours ou à venir utilisent cet équipement';
IF dcptReserv > 0 THEN
RAISE resaExiste;
ELSE
SELECT COUNT(*) INTO dcptReserv FROM CONTENIR con, RESERVATION res
WHERE con.idReserv = res.idReserv AND dateReserv < SYSDATE
AND con.idEquipement = '&videquip';
DELETE FROM CONTENIR WHERE idReserv IN (
SELECT con.idReserv INTO dcptReserv FROM CONTENIR con, RESERVATION res
WHERE con.idReserv = res.idReserv AND dateReserv < SYSDATE
AND con.idEquipement = '&videquip') AND idEquipement = '&videquip';
INSERT INTO tresultat VALUES (TO_CHAR(dcptReserv) || ' contenu de réservations passées ont été supprimées');
DELETE FROM EQUIPEMENT WHERE idEquipement = '&videquip';
INSERT INTO tresultat VALUES ('Equipement supprimé : ' || '&videquip');
END IF;
END IF;
EXCEPTION
WHEN inexistant THEN
INSERT INTO tresultat VALUES (dmessage);
WHEN resaExiste THEN
INSERT INTO tresultat VALUES (dmessage);
END;

@ -0,0 +1,56 @@

DECLARE
didReservation char(3);
ddateReserv date;
dnom varchar2(20);
dancidReservation char(3);
dmessage varchar2(200);
inexistant exception;
dcpt number:=0;
dnb number:=0;
CURSOR cur IS SELECT idReservation, dateReserv, nom
FROM CONTENIR con, RESERVATION res, FAIRE fai, JOUEUR jou
WHERE con.idReserv = res.idReserv AND res.idReserv = fai.idReserv AND fai.idJoueur = jou.idJoueur
AND dateReserv >= SYSDATE AND con.idEquipement = '&videquip'
ORDER BY 1,2,3;
BEGIN
dmessage:='id équipement inexistant';
SELECT COUNT(*) INTO dcpt
FROM EQUIPEMENT
WHERE idEquipement='&videquip';
IF dcpt=0 THEN
RAISE inexistant;
ELSE
OPEN cur;
FETCH cur INTO didReservation, 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 didReservation, ddateReserv, dnom;
END LOOP;
END LOOP;
CLOSE cur;
INSERT INTO tresultat VALUES ('');
INSERT INTO tresultat VALUES ('Nombre de joueurs à prévenir : ' || TO_CHAR(dnb));
END IF;
EXCEPTION
WHEN inexistant THEN
INSERT INTO tresultat VALUES (dmessage);
END;

@ -0,0 +1,29 @@

DECLARE
didReserv char(5);
ddateReserv date;
dcout number;
CURSOR cur IS SELECT idReserv, dateReserv, SUM(nombre*tarif)
FROM RESERVATION res, CONTENIR con, EQUIPEMENT equ
WHERE con.idReserv = res.idReserv AND con.idEquipement = equi.idEquipement
group by idReserv, dateReserv
order by 2 DESC;
BEGIN
OPEN cur;
FETCH cur INTO didReserv, ddateReserv, dcout;
WHILE cur%FOUND
LOOP
INSERT INTO tresultat VALUES ('Id reservation : ' || didReserv || ' date : ' || TO_CHAR(ddateReserv,'dd/mm/yy') || ' Coût des équipements : ' || TO_CHAR(dcout) || '');
INSERT INTO tresultat VALUES ('');
FETCH cur INTO didReserv, ddateReserv, dcout;
END LOOP;
CLOSE cur;
END;
Loading…
Cancel
Save