Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2010, 10h37   #1
Invité de passage
 
Sébastien LEMOINE
Inscription : décembre 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Sébastien LEMOINE

Informations forums :
Inscription : décembre 2010
Messages : 2
Points : 1
Points : 1
Par défaut Erreur inconnue: PLS-00225: référence de sous-programme ou de curseur 'OGC_X' est hors étendue

Bonjour,

Je suis en étude de développement d'application et pour mon projet on me demande de créer une procédure PL/SQL qui insère une ligne dans une table nommé FACTURE.
Voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
CREATE OR REPLACE PROCEDURE NVFACTURE
(resid IN INTEGER) IS 
CURSOR cr IS SELECT res_id,clit_nom_societe,clit_nom,clit_prenom,clit_adresse,hot_nom,hot_adresse,hot_tel,hot_site_web,res_date_arr,res_date_dep,res_nb_nuits,cha_num,pr_prix,ser_fac_prix_total_ht FROM client,reservation,prix,chambre,hotels,services_fact,service_proposer
WHERE resid=res_id AND res_clit=clit_code AND res_cha=cha_id AND cha_prix=pr_id AND cha_hot=hot_id AND ser_fac_fac_id=res_id AND ser_fac_ser_id=ser_prop_id;
montantht NUMBER(5,2);
totalserv NUMBER(5,2);
tva NUMBER(5,2);
montantttc NUMBER(5,2);
BEGIN
	SELECT sum(ser_fac_prix_total_ht) INTO totalserv FROM services_fact WHERE ser_fac_fac_id=resid;
	montantht:= x.res_nb_nuits*x.pr_prix+totalserv;
	tva:=montantht*0.196;
	montantttc:=montantht+tva;
	FOR X IN CR LOOP
		INSERT INTO FACTURE VALUES (sq_facture.NEXTVAL,sysdate,x.res_id,x.clit_nom_societe,x.clit_nom,x.clit_prenom,x.clit_adresse,x.hot_nom,x.hot_adresse,x.hot_tel,x.hot_site_web,x.res_date_arr,x.res_date_dep,x.res_nb_nuits,x.cha_num,x.pr_prix,totalserv,montantht,tva,montantttc);
		dbms_output.put_line('facture creer');
	END LOOP;
END;
Je suis sous oracle iSQL*Plus et il me renvoie les erreurs suivantes

LINE/COL ERROR
11/2 PL/SQL: Statement ignored
11/16 PLS-00225: référence de sous-programme ou de curseur 'OGC_X' est hors étendue

Je ne comprend pas du tout la seconde erreur et j'aurai aimé de plus amples information sur cette dernière.

Merci d'avance
sikald est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h34   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Code :
1
2
3
 
...
  montantht:= x.res_nb_nuits*x.pr_prix+totalserv;
Ce quoi x dans ce ligne de code ? Vous l'avez defini où ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h46   #3
Invité de passage
 
Sébastien LEMOINE
Inscription : décembre 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Sébastien LEMOINE

Informations forums :
Inscription : décembre 2010
Messages : 2
Points : 1
Points : 1
Merci grâce a vous j'ai pu repairé mon erreur
En réalité le bloque de calcule
Code :
1
2
3
4
SELECT sum(ser_fac_prix_total_ht) INTO totalserv FROM services_fact WHERE ser_fac_fac_id=resid;
		montantht:= x.res_nb_nuits*x.pr_prix+totalserv;
		tva:=montantht*0.196;
		montantttc:=montantht+tva;
doit se trouver dans la boucle FOR et c'est grâce a votre question que j'ai pu comprendre mon erreur.
sikald est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h08.


 
 
 
 
Partenaires

Hébergement Web