bonjour ,
j'ai crée une procédure mais à chaque fois sql*plus me donne un avertissement comme quoi procédure a été créée avec erreurs de compilation...aidez moi à trouver l'erreur please...
Au fait je dois créer la procédure suivante:
procedure reserver(ncli number, nom_hotel varchar, la_ville varchar, catch number,nbp number, deb_res char, fin_res char, out OK boolean)
qui effectue pour le client de clé ncli, et pour nbp personnes, la réservation d’une chambre de catégorie catch dans l’hôtel de nom nom_hotel de la ville de la_ville, pour la période définie par deb_res et fin_res. Si l’hôtel n’existe pas, l’exception HOTEL_INCONNU sera levée. Si la réservation est impossible, le paramètre en mode de sortie OK sera positionné à FAUX. La date de réservation sera naturellement la date du jour (SYSDATE en ORACLE). On supposera l’existence d’une séquence nommée seq_reserv pour attribuer un nouveau numéro de réservation.
voici le code pl/sql:
function est_libre(nh number, nch number, d number, f number) est une fonction que j'ai déjà créé elle retourne VRAI si la chambre numéro nch de l’hôtel nh est libre entre les dates d et f, et FAUX dans le cas contraire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 --Creation de la sequence create sequence seqReserv start with 17 ; --Creation de la procedure create or replace procedure reserver(ncli number, nom_hotel varchar, la_ville varchar, catch number,nbp number, deb_res date, fin_res date, out OK boolean) is cursor catch_curs is select ch.numch,ch.numh from chambres ch,hotels h where ch.numh=h.numh and ch.categorie=catch and h.nomh=nom_hotel and h.ville=la_ville; v_enreg catch_curs%rowtype; v_testeur boolean; v_insert integer :0; HOTEL_INCONNU exception; begin open catch_curs; fetch catch_curs into v_enreg; if(v_enreg%notfound)then raise HOTEL_INCONNU; else while(v_enreg%found) loop v_testeur:=est_libre(v_enreg.numh, v_enreg.numch, deb_res, fin_res); if(v_testeur) then insert into reservations values(seqReserv.nextval,SYSDATE,deb_res,deb_res,nbp,ncli,v_enreg.numh,v_enreg.numch); v_insert :=1; exit; end if; fetch catch_curs into v_enreg; end loop; close catch_curs; if(v_insert=1) OK:=true; else OK:=false; end if; exception when HOTEL_INCONNU then dbms_output.put_line('Désole, lhotel que vous demandez n existe pas.'); end; end; /
merci.
Partager