|
|
-- 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;
|