-- Exercice 3 -- On souhaite enregistrer le retour d’un véhicule. Donner la procédure PL/SQL permettant l’enregistrement du retour, pour une date de retour donnée et pour un véhicule dont on saisira le numéro. On saisira également le kilométrage de fin de location. -- Informations à saisir : numéro du véhicule, date de retour, kilométrage de fin -- - Les messages suivants sont à prévoir: -- - ‘numéro véhicule inconnu -- - ‘ce véhicule n’est pas en cours de location -- - ‘la date de retour doit être postérieure à la date de début de location’ -- - ‘le kilométrage de fin doit être supérieur au kilométrage de début -- - ‘ le retour a bien été enregistré et le kilométrage du véhicule a été mis à jour’ -- TEST -- VE009 -- numero de vehicule inconnu -- VE004 -- Vehicule pas en cours de location -- VE003 -- '03-JAN-2007' -- 370000 -- PB date de retour inf date debut -- VE003 -- '03-JAN-2018' -- 37 -- PB Km de retour inf KM debut -- VE004 -- '03-JAN-2018' -- 4000000 -- ORA-00001 : pb de clef non respectee -- ORA-02290 : check constraint Viole les contraintes d'integrite du modele. insert into Tlocation2017 values ('C002','VE004',to_date('29-01-2016','DD-MM-YYYY'),to_date('10-02-2017','DD-MM-YYYY'),5000); DROP TABLE tligne; CREATE TABLE tligne (ligne varchar2(100)); set echo off; set verify off; set feed off; variable vnovehicule char(5); variable vdateretour date; variable vkmfin number; prompt Entrer le numero du vehicule : accept vnovehicule prompt Entrer la date de retour : accept vdateretour prompt Entrer le kilometrage de fin : accept vkmfin declare dnovehicule char(5); ddatedebut date; dkmdeb number(6); dnoclient char(4); dmessage varchar2(100); begin dmessage:='numero de vehicule inconnu'; select noveh into dnovehicule from Tvehicule2017 where noveh='&vnovehicule'; dmessage:='Vehicule pas en cours de location'; select noclient into dnoclient from Tlocation2017 where noveh='&vnovehicule'; select datedeb, kmdeb, noclient into ddatedebut, dkmdeb, dnoclient from Tlocation2017 where noveh='&vnovehicule'; if (ddatedebut >= &vdateretour) then Insert into tligne values ('PB date de retour inf date debut'); else if (dkmdeb >= &vkmfin) then Insert into tligne values ('PB Km de retour inf KM debut'); else Insert into Tlocatretour2017 values (dnoclient,'&vnovehicule',ddatedebut,dkmdeb,&vkmfin,to_date(&vdateretour,'DD-MM-YYYY')); -- Insert into Tlocatretour2017 values (dnoclient,'&vnovehicule',ddatedebut,dkmdeb,&vkmfin,to_date('15-12-2019','DD-MM-YYYY')); Insert into tligne values ('Retour bien effectue '); end if; end if; exception when no_data_found then insert into tligne values (dmessage); end; . / select * from tligne; set echo on; set verify on; set feed on;