From 82dbe8cb00eff59ede47f0ef7c631a267247f1cb Mon Sep 17 00:00:00 2001 From: pascal Date: Tue, 19 Jan 2021 15:43:51 +0100 Subject: [PATCH] okf --- TP/TP1-Q1.sql | 70 ++++++++ TP/TP1-Q2.sql | 55 ++++++ TP/TP1-Q3.sql | 107 ++++++++++++ TP/TP1.sql | 159 ++++++++++++++++++ TP/TP2-Q1.sql | 65 +++++++ TP/TP2-Q2.sql | 62 +++++++ TP/TP2-Q3.sql | 40 +++++ ...G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex1.sql | 84 +++++++++ ...G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex2.sql | 76 +++++++++ ...G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex3.sql | 114 +++++++++++++ TP/locationvehic2019.sql | 91 ++++++++++ 11 files changed, 923 insertions(+) create mode 100755 TP/TP1-Q1.sql create mode 100755 TP/TP1-Q2.sql create mode 100755 TP/TP1-Q3.sql create mode 100755 TP/TP1.sql create mode 100755 TP/TP2-Q1.sql create mode 100755 TP/TP2-Q2.sql create mode 100755 TP/TP2-Q3.sql create mode 100644 TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex1.sql create mode 100644 TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex2.sql create mode 100644 TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex3.sql create mode 100755 TP/locationvehic2019.sql diff --git a/TP/TP1-Q1.sql b/TP/TP1-Q1.sql new file mode 100755 index 0000000..a1bc6a0 --- /dev/null +++ b/TP/TP1-Q1.sql @@ -0,0 +1,70 @@ + +-- Exercice 1 +-- A partir d’un numéro de véhicule saisi au clavier, afficher +-- l’immatriculation et le modèle correspondant ainsi que le nom du +-- client si c’est un véhicule en cours de location. + +-- Cas d’erreur : « n° de véhicule inconnu ». + +-- Test VE001 +-- aa-2000-za est l immatriculation du vehicule VE001 de modele clio 3 loue par Dup + +-- Test VE005 +-- ff-6000-za est l immatriculation du vehicule VE005 de modele Picasso + +-- Test VE008 +-- VE008 vehicule inconnu + + +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(100)); + +set echo off; +set verify off; +set feed off; + +variable vnumvehicule char(5) +variable toto char(5) + +prompt Entrer le numero du vehicule : + +accept vnumvehicule + +declare + +dimmatriculation char(10); +dmodele varchar2(30); +dmessage varchar2(100); +dnom VARCHAR2(80); + +begin + +dmessage := '&vnumvehicule'||' vehicule inconnu'; + +select immat, modele into dimmatriculation, dmodele +from Tvehicule2017 +where noveh='&vnumvehicule'; + +dmessage := dimmatriculation||' est l immatriculation du vehicule '||'&vnumvehicule'||' de modele '||dmodele; + +select nom into dnom +from Tclient2017, Tlocation2017 +where Tlocation2017.noveh='&vnumvehicule' and Tlocation2017.noclient=Tclient2017.noclient; + +Insert into tligne values (dmessage||' loue par '||dnom); + + +exception +when no_data_found then + insert into tligne values (dmessage); +end; +. +/ +select * from tligne; + +set echo on; +set verify on; +set feed on; + + + diff --git a/TP/TP1-Q2.sql b/TP/TP1-Q2.sql new file mode 100755 index 0000000..8780b92 --- /dev/null +++ b/TP/TP1-Q2.sql @@ -0,0 +1,55 @@ + +-- Exercice 2 +-- Afficher le numéro du véhicule loué par un client dont le numéro sera saisi. +-- Cas d’erreur : +-- - « aucune location pour ce client » +-- - « plusieurs locations en cours pour ce client » +-- (nous verrons dans un prochain TP comment traiter ce problème) + +-- Test C001, C002, C003 : + +-- plusieurs locations pour C001 +-- vehicule VE003 est loue par C002 +-- aucune location pour C003 + + +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(100)); + +set echo off; +set verify off; +set feed off; + +variable vnoclient char(4) + +prompt Entrer le numero du client : +accept vnoclient + +declare +dnovehicule char(5); + +BEGIN + +select noveh into dnovehicule +from Tlocation2017 +where noclient='&vnoclient'; + +Insert into tligne values ('vehicule '||dnovehicule||' est loue par '||'&vnoclient'); + +exception + when no_data_found then + insert into tligne values ('aucune location pour '||'&vnoclient'); + +when too_many_rows then +insert into tligne values ('plusieurs locations pour '||'&vnoclient'); + +end; +. +/ +select * from tligne; + +set echo on; +set verify on; +set feed on; + + diff --git a/TP/TP1-Q3.sql b/TP/TP1-Q3.sql new file mode 100755 index 0000000..98279e0 --- /dev/null +++ b/TP/TP1-Q3.sql @@ -0,0 +1,107 @@ +-- 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; diff --git a/TP/TP1.sql b/TP/TP1.sql new file mode 100755 index 0000000..12b6513 --- /dev/null +++ b/TP/TP1.sql @@ -0,0 +1,159 @@ +-- Exercice 1 +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(100)); + +set echo off; +set verify off; +set feed off; + +variable vnumvehicule char(5) +variable toto char(5) + +prompt Entrer le numero du vehicule : + +accept vnumvehicule + +declare + +dimmatriculation char(10); +dmodele varchar2(30); + +begin + +select immat, modele into dimmatriculation, dmodele +from Tvehicule2017 +where noveh='&vnumvehicule'; + +Insert into tligne values (dimmatriculation||dmodele); + +exception +when no_data_found then + insert into tligne values ('&vnumvehicule'||'de vehicule inconnu'); +end; +. +/ +select * from tligne; + +set echo on; +set verify on; +set feed on; + +-- Exercice 2 + +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(100)); + +set echo off; +set verify off; +set feed off; + +variable vnoclient char(4) + +prompt Entrer le numero du client : +accept vnoclient + +declare +dnovehicule char(5); + +BEGIN + +select noveh into dnovehicule +from Tlocation2017 +where noclient='&vnoclient'; + +Insert into tligne values ('vehicule '||dnovehicule||' loue par '||'&vnoclient'); + +exception + when no_data_found then + insert into tligne values ('aucune location pour '||'&vnoclient'); + +when too_many_rows then +insert into tligne values ('plusieurs locations pour '||'&vnoclient'); + +end; +. +/ +select * from tligne; + +set echo on; +set verify on; +set feed on; + +-- Exercice 3 + +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; +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'); +end if; + +if dkmdeb > &vkmfin + then Insert into tligne values ('PB Km de retour inf KM debut'); +end if; + +-- Insert into Tlocatretour2017 values (dnoclient,'&vnovehicule',ddatedebut,dkmdeb,&vkmfin,&vdateretour); + +Insert into Tlocatretour2017 values (dnoclient,'&vnovehicule',ddatedebut,dkmdeb,&vkmfin,to_date('15-12-2016','DD-MM-YYYY')); + +Insert into tligne values ('retour ok'); + +exception +when no_data_found then insert into tligne values (dmessage); + +end; + +. +/ + +select * from tligne; + +-- set echo on; +-- set verify on; +-- set feed on; + + diff --git a/TP/TP2-Q1.sql b/TP/TP2-Q1.sql new file mode 100755 index 0000000..414efc8 --- /dev/null +++ b/TP/TP2-Q1.sql @@ -0,0 +1,65 @@ +-- Exercice 1 +-- Afficher la liste des véhicules libres d’une catégorie dont on saisit le numéro +-- ORA-01001: verifier que le curseur est ouver + +-- TEST +-- CAT3 +-- VE005 ff-6000-za noire Picasso + +-- CAT2 +-- Pas de vehicule libre dans cette categorie + +-- CAT7 +-- Pas de vehicule libre dans cette categorie + +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(300)); + +set echo off; +set verify off; +set feed off; + +variable vcategorie char(4); +prompt Entrer le numero de la categorie : +accept vnocategorie + +declare + +dimmatriculation Tvehicule2017.immat%TYPE; +dnoveh Tvehicule2017.noveh%TYPE; +dcouleur Tvehicule2017.couleur%TYPE; +dmodele Tvehicule2017.modele%TYPE; +dcat number; + +cursor r is select noveh, immat, couleur, modele from Tvehicule2017 where nocat='&vnocategorie' and noveh not in (select noveh from Tlocation2017) order by noveh; + +begin + +select noveh, immat, couleur, modele into dnoveh, dimmatriculation, dcouleur, dmodele from Tvehicule2017 where nocat='&vnocategorie' and noveh not in (select noveh from Tlocation2017) order by noveh; + +select count(nocat) into dcat from Tcategorie2017 where nocat='&vnocategorie'; + +if dcat = 0 then insert into tligne values ('categorie inconnu'); +end if; + +open r; +fetch r into dnoveh, dimmatriculation, dcouleur, dmodele; + +while r%found +loop + insert into tligne values ( dnoveh ||' '||dimmatriculation||' '||dcouleur||' '||dmodele); + fetch r into dnoveh, dimmatriculation, dcouleur, dmodele; +end loop; +close r; + +exception +when no_data_found then +insert into tligne values ('Pas de vehicule libre dans cette categorie'); +end; +. +/ +select * from tligne; + +set echo on; +set verify on; +set feed on; diff --git a/TP/TP2-Q2.sql b/TP/TP2-Q2.sql new file mode 100755 index 0000000..e88b57d --- /dev/null +++ b/TP/TP2-Q2.sql @@ -0,0 +1,62 @@ +-- Exercice 2 +-- TEST C001 + +-- VE001 VE001 30-JAN-17 clio 3 +-- VE002 VE002 28-JAN-17 308 +-- Nombre de locations en cours pour le client C001 est de 2 + +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(200)); + +set echo off; +set verify off; +set feed off; + +variable vclient char(4); + +prompt Entrer le numero du client: +accept vnoclient + +declare +dnocat Tvehicule2017.nocat%TYPE; +dnoveh Tlocation2017.noveh%TYPE; +ddatedeb Tlocation2017.datedeb%TYPE; +dmodele Tvehicule2017.modele%TYPE; +dnombreloc number; + +cursor r is +select nocat, Tlocation2017.noveh, datedeb, modele +from Tlocation2017, Tvehicule2017 +where noclient='&vnoclient' and Tlocation2017.noveh= Tvehicule2017.noveh +order by nocat, noveh; + +begin +open r; + +fetch r into dnocat, dnoveh, ddatedeb, dmodele; +while r%found +loop + insert into tligne values (dnoveh||' '||dnoveh||' '||ddatedeb||' '||dmodele); + fetch r into dnocat, dnoveh, ddatedeb, dmodele; +end loop; +close r; + +select count(noclient) into dnombreloc +from Tlocation2017 +where noclient='&vnoclient'; + +insert into tligne values ('Nombre de locations en cours pour le client '||'&noclient'||' est de '||dnombreloc); + +exception +when no_data_found then +insert into tligne values ('Pas de vehicule libre'); + +end; +. +/ + +select * from tligne; + +set echo on; +set verify on; +set feed on; diff --git a/TP/TP2-Q3.sql b/TP/TP2-Q3.sql new file mode 100755 index 0000000..9040812 --- /dev/null +++ b/TP/TP2-Q3.sql @@ -0,0 +1,40 @@ +-- Exercice 3 +-- Afficher le nombre de véhicules par catégorie. + +DROP TABLE tligne; +CREATE TABLE tligne (ligne varchar2(300)); + +set echo off; +set verify off; +set feed off; + +declare + +dnocat Tvehicule2017.nocat%TYPE; +dnbveh number; + +cursor r is +select nocat, count(nocat) +from Tvehicule2017 +group by nocat +order by nocat; + +begin +open r; +fetch r into dnocat, dnbveh; + +while r%found +loop + insert into tligne values (dnocat ||' '||dnbveh); + fetch r into dnocat, dnbveh; +end loop; +close r; +end; +. +/ + +select * from tligne; + +set echo on; +set verify on; +set feed on; diff --git a/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex1.sql b/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex1.sql new file mode 100644 index 0000000..978f388 --- /dev/null +++ b/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex1.sql @@ -0,0 +1,84 @@ +---------------------------------------- Exercice 1 ---------------------------------------- +DROP TABLE TLIGNE; +CREATE TABLE TLIGNE(LIGNE VARCHAR2(500)); + +-- start ../part1.sql + +set echo off; +set verify off; +set feed off; + +VARIABLE vreflog CHAR(4) +PROMPT Reference logement ? +ACCEPT vreflog + +DECLARE + + dloyer TLOGT2018.LOYER%type; + dsuperf TLOGT2018.SUPERF%type; + dnoloc TLOGT2018.NOLOC%type; + dnomloc TCLIENT2018.NOMCLI%type; + dnblog NUMBER(4); + +BEGIN + + SELECT COUNT(*) + INTO dnblog + FROM TLOGT2018 + WHERE REFLOG LIKE '&vreflog'; + + IF dnblog != 0 THEN + SELECT SUPERF, LOYER, NOLOC + INTO dsuperf, dloyer, dnoloc + FROM TLOGT2018 + WHERE REFLOG LIKE '&vreflog'; + + IF dnoloc != 'NULL' THEN + SELECT NOMCLI + INTO dnomloc + FROM TCLIENT2018 + WHERE NOCLI = dnoloc; + ELSE + dnomloc := 'Locataire inconnu'; + + END IF; + + INSERT INTO TLIGNE VALUES('Superficie : ' || TO_CHAR(dsuperf) || ' Loyer : ' || TO_CHAR(dloyer) || ' Locataire : ' || TO_CHAR(dnomloc)); + + ELSE + INSERT INTO TLIGNE VALUES('Logement inconnu'); + + END IF; + +END; + +---------------------------------------- Terminal output ---------------------------------------- +--Reference logement ? +--L001 (cas où il n'y a pas de logement en cours ) + +--LIGNE +-------------------------------------------------------------------------------- +--Superficie : 90 Loyer : 450 Locataire : Locataire inconnu + + +--L002 (cas où il y a un locataire) + +--LIGNE +-------------------------------------------------------------------------------- +--Superficie : 60 Loyer : 400 Locataire : Martin + + +--L999 (cas où le logement n'existe pas) + +--LIGNE +-------------------------------------------------------------------------------- +--Logement inconnu + +. +/ + +SELECT * FROM TLIGNE; + +set verify on; +set feed on; +set echo on; diff --git a/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex2.sql b/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex2.sql new file mode 100644 index 0000000..d67ccb2 --- /dev/null +++ b/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex2.sql @@ -0,0 +1,76 @@ +---------------------------------------- Exercice 2 ---------------------------------------- +DROP TABLE TLIGNE; +CREATE TABLE TLIGNE(LIGNE VARCHAR2(500)); + +set echo off; +set verify off; +set feed off; + +-- start ../part1.sql + +VARIABLE vnoloc CHAR(6) +PROMPT Numero client ? +ACCEPT vnoloc + +DECLARE + + dreflog TLOGT2018.REFLOG%type; + dloyer TLOGT2018.REFLOG%type; + dmessage VARCHAR2(500); + +BEGIN + + SELECT REFLOG, LOYER + INTO dreflog, dloyer + FROM TLOGT2018 + WHERE NOLOC = '&vnoloc'; + + dmessage := 'Client : ' || TO_CHAR(:vnoloc) || ' Reference : ' || TO_CHAR(dreflog) || ' Loyer : ' || TO_CHAR(dloyer); + + INSERT INTO TLIGNE VALUES(dmessage); + + EXCEPTION + WHEN NO_DATA_FOUND THEN + dmessage := 'Pas de location.'; + INSERT INTO TLIGNE VALUES(dmessage); + WHEN TOO_MANY_ROWS THEN + dmessage := 'Plusieurs locations.'; + INSERT INTO TLIGNE VALUES(dmessage); + + +END; + +---------------------------------------- Terminal output ---------------------------------------- + +--Numero client ? (cas où il n'y a pas de location) +--CL0001 + +--LIGNE +-------------------------------------------------------------------------------- +--Pas de location. + + +--Numero client ? (cas où il y a plusieurs locations) +--CL0002 + +--LIGNE +-------------------------------------------------------------------------------- +--Plusieurs locations + + +--Numero client ? (cas où il n'y a qu'une location) +--CL0004 + +--LIGNE +-------------------------------------------------------------------------------- +--Client : Reference : L003 Loyer : 320 + + +. +/ + +SELECT * FROM TLIGNE; + +set verify on; +set feed on; +set echo on; diff --git a/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex3.sql b/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex3.sql new file mode 100644 index 0000000..741053d --- /dev/null +++ b/TP/[TP_BDS3]G3_TP1_NGUYEN_Damien_KURKLU_Fikret_ex3.sql @@ -0,0 +1,114 @@ +---------------------------------------- Exercice 3 ---------------------------------------- +DROP TABLE TLIGNE; +CREATE TABLE TLIGNE(LIGNE VARCHAR2(500)); + +set echo off; +set verify off; +set feed off; + +ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY'; + +-- start ../part1.sql + +VARIABLE vnouveaunoloc CHAR(6) +VARIABLE vdatechangement DATE +VARIABLE vreflog CHAR(4) + +PROMPT Numero du nouveau locataire ? +ACCEPT vnewnoloc +PROMPT Saisir la date de changement (format : jj/mm/aaaa) +ACCEPT vdatechangement +PROMPT Reference logement ? +ACCEPT vreflog + +DECLARE + dreflog TLOGT2018.REFLOG%type; + dnewnoloc TCLIENT2018.NOCLI%type; + doldnoloc TCLIENT2018.NOCLI%type; + dmessage VARCHAR2(500); + +BEGIN + + dmessage := 'Reference de logement inconnue.'; + SELECT REFLOG + INTO dreflog + FROM TLOGT2018 + WHERE REFLOG = '&vreflog'; + + dmessage := 'Locataire inconnu.'; + SELECT NOLOC + INTO doldnoloc + FROM TLOCATION2018 + WHERE REFLOG = '&vreflog' + AND FINLOC IS NULL; + + dmessage := 'Client inconnu.'; + SELECT NOCLI + INTO dnewnoloc + FROM TCLIENT2018 + WHERE NOCLI = '&vnewnoloc'; + + UPDATE TLOCATION2018 + SET FINLOC = '&vdatechangement' + WHERE FINLOC IS NULL + AND REFLOG = '&vreflog'; + + INSERT INTO TLOCATION2018 + VALUES('&vreflog', '&vdatechangement', NULL, '&vnewnoloc'); + + INSERT INTO TLIGNE VALUES('Depart du locataire nr. ' || TO_CHAR(doldnoloc) || ' du logement nr. ' || TO_CHAR(dreflog) || ' enregistre.'); + INSERT INTO TLIGNE VALUES('Arrivee du locataire nr. ' || TO_CHAR(dnewnoloc) || ' du logement nr. ' || TO_CHAR(dreflog) || ' enregistree.'); + + EXCEPTION + WHEN NO_DATA_FOUND THEN + INSERT INTO TLIGNE VALUES(dmessage); + +END; + + +---------------------------------------- Terminal output ---------------------------------------- + +--Numero du nouveau locataire ? (cas où tout se passe bien) +--CL0003 +--Saisir la date de changement (format : jj/mm/aaaa) +--12/02/2018 +--Reference logement ? +--L003 + +--LIGNE +-------------------------------------------------------------------------------- +--Depart du locataire nr. CL0004 du logement nr. L003 enregistre. +--Arrivee du locataire nr. CL0003 du logement nr. L003 enregistree. + + +--Numero du nouveau locataire ? (cas où il n'y a personne dans le logement donné) +--CL0002 +--Saisir la date de changement (format : jj/mm/aaaa) +--12/05/2018 +--Reference logement ? +--L001 + +--LIGNE +-------------------------------------------------------------------------------- +--Locataire inconnu. + + +--Numero du nouveau locataire ? (cas où le nouveau client entré est incorrect) +--CL9999 +--Saisir la date de changement (format : jj/mm/aaaa) +--12/05/2018 +--Reference logement ? +--L002 + +--LIGNE +-------------------------------------------------------------------------------- +--Client inconnu. + +. +/ + +SELECT * FROM TLIGNE; + +set verify on; +set feed on; +set echo on; diff --git a/TP/locationvehic2019.sql b/TP/locationvehic2019.sql new file mode 100755 index 0000000..579bac8 --- /dev/null +++ b/TP/locationvehic2019.sql @@ -0,0 +1,91 @@ +DROP TABLE Tlocatretour2017; +DROP TABLE Tlocation2017; +DROP TABLE Tvehicule2017; +DROP TABLE Tremplacement2017; +DROP TABLE Tcategorie2017; +DROP TABLE Tclient2017; + +CREATE TABLE Tclient2017 +( +noclient CHAR(4) PRIMARY KEY, +nom VARCHAR2(80) NOT NULL, +ville VARCHAR2(80) NOT NULL, +postal VARCHAR2(5) NOT NULL +); + + +CREATE TABLE Tcategorie2017 +( +nocat CHAR(4) PRIMARY KEY, +libelle VARCHAR2(20) NOT NULL +); + +CREATE TABLE Tremplacement2017 +( +nocat CHAR(4) references Tcategorie2017, +nocatequi CHAR(4) references Tcategorie2017, +primary key (nocat,nocatequi) +); + +CREATE TABLE Tvehicule2017 +( +noveh char(5) primary key, +immat char(10) not null, +modele varchar2(30) not null, +couleur varchar2(30) not null, +kilometrage number not null, +nocat CHAR(4) not null references Tcategorie2017 +); + + +CREATE TABLE TLOCATION2017 +( +noclient CHAR(4) references Tclient2017 not null, +noveh char(5) primary key references tvehicule2017, +datedeb date not null, +dateretprev date not null, +kmdeb number not null +); + +CREATE TABLE Tlocatretour2017 +( +noclient CHAR(4) references Tclient2017 not null, +noveh char(5) not null references tvehicule2017, +datedeb date not null, +kmdeb number not null, +kmfin number not null, +dateretour date not null, +primary key (noveh,datedeb), +check(dateretour>datedeb), +check(kmfin>kmdeb) +); + + +insert into Tclient2017 values ('C001','Dupond','Clermont Fd','63000'); +insert into Tclient2017 values ('C002','Martin','Aubiere','63170'); +insert into Tclient2017 values ('C003','Dutour','Clermont Fd','63000'); + +insert into Tcategorie2017 values ('CAT1','legere 1'); +insert into Tcategorie2017 values ('CAT2','legere 2'); +insert into Tcategorie2017 values ('CAT3','monospace 1'); +insert into Tcategorie2017 values ('CAT4','monospace 2'); + +insert into Tremplacement2017 values ('CAT1','CAT2'); +insert into Tremplacement2017 values ('CAT3','CAT4'); + +insert into Tvehicule2017 values ('VE001','aa-2000-za','clio 3','noire',26500,'CAT1'); +insert into Tvehicule2017 values ('VE002','bb-3000-za','308','blanche',20000,'CAT2'); +insert into Tvehicule2017 values ('VE003','cc-4000-za','clio 3','noire',5000,'CAT2'); +insert into Tvehicule2017 values ('VE004','dd-5000-za','308','grise',1200,'CAT1'); +insert into Tvehicule2017 values ('VE005','ff-6000-za','Picasso','noire',6600,'CAT3'); + + +insert into Tlocation2017 values ('C001','VE001',to_date('30-01-2017','DD-MM-YYYY'),to_date('5-02-2017','DD-MM-YYYY'),26500); +insert into Tlocation2017 values ('C001','VE002',to_date('28-01-2017','DD-MM-YYYY'),to_date('7-02-2017','DD-MM-YYYY'),20000); +insert into Tlocation2017 values ('C002','VE003',to_date('29-01-2017','DD-MM-YYYY'),to_date('10-02-2017','DD-MM-YYYY'),5000); + +insert into Tlocatretour2017 values ('C001','VE001',to_date('30-12-2016','DD-MM-YYYY'),24500,25000,to_date('5-01-2017','DD-MM-YYYY')); +insert into Tlocatretour2017 values ('C002','VE001',to_date('6-01-2017','DD-MM-YYYY'),25000,26500,to_date('10-01-2017','DD-MM-YYYY')); +insert into Tlocatretour2017 values ('C001','VE002',to_date('30-12-2016','DD-MM-YYYY'),18500,20000,to_date('5-01-2017','DD-MM-YYYY')); +insert into Tlocatretour2017 values ('C003','VE003',to_date('30-11-2016','DD-MM-YYYY'),1500,2500,to_date('5-12-2016','DD-MM-YYYY')); +insert into Tlocatretour2017 values ('C002','VE003',to_date('10-12-2016','DD-MM-YYYY'),2500,5000,to_date('15-12-2016','DD-MM-YYYY'));