Erreur de compilation pl/sql
ultra3omda
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
hela -
hela -
Bonjour,
bonjour cher amis,
j'ai créé une base de données avec une procédure qui calcul le nombre de vol d'un type d'avion passé en paramètre mais le problème que lorsque j'exécute mon code il y a une erreur de compilation de la procédure quelqu'un peut m'aider???
voiçi le code :
drop table affectation;
drop table avion;
drop table vol;
drop table pilote;
drop table appareil;
create table vol(numvol varchar2(20) primary key,villedep varchar2(20), villear varchar2(20), dep_heure varchar2(20),
dep_min varchar2(20), arrivee_heure varchar2(20), arrivee_min varchar2(20));
create table pilote (numpilot varchar2(20) primary key , nom varchar2(20), adresse varchar2(20), salaire varchar2(20),
commission varchar2(20), dateembauche varchar2(20)) ;
create table appareil(codetype varchar2(20) primary key, capacité varchar2(20), design varchar2(20));
create table avion (numavion varchar2(20) primary key, anneeservice varchar2(20), nomavion varchar2(20), nbr_heure_vol varchar2(20),
typeavion varchar2(20), constraint tp foreign key(typeavion) references appareil(codetype));
create table affectation (vol varchar2(20) , avion varchar2(20), date_vol varchar2(20), nbpassage varchar2(20), pilote varchar2(20)
, primary key(vol,avion,date_vol),
constraint tp1 foreign key(vol) references vol(numvol),
constraint tp2 foreign key(avion) references avion(numavion),
constraint tp3 foreign key(pilote) references pilote(numpilot));
insert into vol values('1','Monastir','Paris','12','10','15','00');
insert into vol values('2','Tunis','Napoli','13','40','15','20');
insert into vol values('3','Sfax','Djerba','17','10','17','30');
insert into pilote values('1','Essafi','Mahdia','7000','0','21/12/1988');
insert into pilote values('2','Ben Brahim','Tunis','7000','0','21/12/1989');
insert into pilote values('3','Abdesslem','Mahdia','7000','0','21/12/1990');
insert into appareil values('1','230','airbus');
insert into appareil values('2','130','concord');
insert into appareil values('3','320','airbus A380');
insert into avion values('1','2','A380','17','3');
insert into avion values('2','1','A380','27','3');
insert into avion values('3','3','A380','7','3');
insert into affectation values('1','1','21/01/2001','100','1');
insert into affectation values('2','2','01/01/2010','180','2');
insert into affectation values('3','1','21/01/2003','200','1');
create or replace procedure calculheure () is
v_nbh number;
begin
select * from avion where typeav=typeavion;
v_nbh := v_nbh + nbr_heure_vol ;
DBms_output.put_line('lt total dheure de vol est :'||v_nbh);
end;
bonjour cher amis,
j'ai créé une base de données avec une procédure qui calcul le nombre de vol d'un type d'avion passé en paramètre mais le problème que lorsque j'exécute mon code il y a une erreur de compilation de la procédure quelqu'un peut m'aider???
voiçi le code :
drop table affectation;
drop table avion;
drop table vol;
drop table pilote;
drop table appareil;
create table vol(numvol varchar2(20) primary key,villedep varchar2(20), villear varchar2(20), dep_heure varchar2(20),
dep_min varchar2(20), arrivee_heure varchar2(20), arrivee_min varchar2(20));
create table pilote (numpilot varchar2(20) primary key , nom varchar2(20), adresse varchar2(20), salaire varchar2(20),
commission varchar2(20), dateembauche varchar2(20)) ;
create table appareil(codetype varchar2(20) primary key, capacité varchar2(20), design varchar2(20));
create table avion (numavion varchar2(20) primary key, anneeservice varchar2(20), nomavion varchar2(20), nbr_heure_vol varchar2(20),
typeavion varchar2(20), constraint tp foreign key(typeavion) references appareil(codetype));
create table affectation (vol varchar2(20) , avion varchar2(20), date_vol varchar2(20), nbpassage varchar2(20), pilote varchar2(20)
, primary key(vol,avion,date_vol),
constraint tp1 foreign key(vol) references vol(numvol),
constraint tp2 foreign key(avion) references avion(numavion),
constraint tp3 foreign key(pilote) references pilote(numpilot));
insert into vol values('1','Monastir','Paris','12','10','15','00');
insert into vol values('2','Tunis','Napoli','13','40','15','20');
insert into vol values('3','Sfax','Djerba','17','10','17','30');
insert into pilote values('1','Essafi','Mahdia','7000','0','21/12/1988');
insert into pilote values('2','Ben Brahim','Tunis','7000','0','21/12/1989');
insert into pilote values('3','Abdesslem','Mahdia','7000','0','21/12/1990');
insert into appareil values('1','230','airbus');
insert into appareil values('2','130','concord');
insert into appareil values('3','320','airbus A380');
insert into avion values('1','2','A380','17','3');
insert into avion values('2','1','A380','27','3');
insert into avion values('3','3','A380','7','3');
insert into affectation values('1','1','21/01/2001','100','1');
insert into affectation values('2','2','01/01/2010','180','2');
insert into affectation values('3','1','21/01/2003','200','1');
create or replace procedure calculheure () is
v_nbh number;
begin
select * from avion where typeav=typeavion;
v_nbh := v_nbh + nbr_heure_vol ;
DBms_output.put_line('lt total dheure de vol est :'||v_nbh);
end;
A voir également:
- Ora-06502: pl/sql : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit
- Télévision numérique - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Chaine tnt gratuite sur mobile - Guide
- Caractère numérique - Guide
- Erreur 0x80070643 - Accueil - Windows
3 réponses
Salut,
Je pense que tu devrais d'abord revoir la doc oracle sur le type de variables : il existe d'autres caractéristiques que le varchar2(20) ;-) des champs date, des champs numériques (pour faire des calculs c'est mieux) ...
Puis dans la doc, regarde aussi le create procédure. Dans ta syntaxe il me semble qu'il manque en tête, le paramètre d'entrée. Puis si le select ramène plusieurs lignes il faut gérer un cursor pour la boucle.
Sinon j'écrirais, pour résoudre ta problématique, plutôt cette requête :
select sum(nbr_heure_vol) from avion where typeavion='3' ;
cdlt
Je pense que tu devrais d'abord revoir la doc oracle sur le type de variables : il existe d'autres caractéristiques que le varchar2(20) ;-) des champs date, des champs numériques (pour faire des calculs c'est mieux) ...
Puis dans la doc, regarde aussi le create procédure. Dans ta syntaxe il me semble qu'il manque en tête, le paramètre d'entrée. Puis si le select ramène plusieurs lignes il faut gérer un cursor pour la boucle.
Sinon j'écrirais, pour résoudre ta problématique, plutôt cette requête :
select sum(nbr_heure_vol) from avion where typeavion='3' ;
cdlt