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;



