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:
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;
/
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.
merci.