You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- Exercice 3
-- On souhaite enregistrer le retour dun véhicule. Donner la procédure PL/SQL permettant lenregistrement 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 nest 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-20022'
-- 370000
-- PB date de retour inf date debut
-- VE003
-- '03-JAN-2022'
-- 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 Tlocation2021 values ('C002','VE004',to_date('29-01-2016','DD-MM-YYYY'),to_date('10-02-2021','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 char(10);
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 Tvehicule2021
where noveh='&vnovehicule';
dmessage:='Vehicule pas en cours de location';
select noclient into dnoclient
from Tlocation2021
where noveh='&vnovehicule';
select datedeb, kmdeb, noclient into ddatedebut, dkmdeb, dnoclient
from Tlocation2021
where noveh='&vnovehicule';
if (ddatedebut >= TO_DATE(&vdateretour,'DD-MM-YYYY'))
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 Tlocatretour2021 values (dnoclient,'&vnovehicule',ddatedebut,dkmdeb,&vkmfin,to_date(&vdateretour,'DD-MM-YYYY'));
-- Insert into Tlocatretour2021 values (dnoclient,'&vnovehicule',ddatedebut,dkmdeb,&vkmfin,to_date('15-12-2019','DD-MM-YYYY'));
Insert into tligne values ('Retour bien effectue ');
Delete Tlocation2021 WHERE noveh='&vnovehicule';
Insert into tligne values ('Effacement location en cours ');
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;