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 03/04/2011, 19h41   #1
Invité de passage
 
Homme
maitrisare en informatique appliqué à la gestion
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : maitrisare en informatique appliqué à la gestion

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 3
Points : 3
Par défaut problème d'exécution d'une fonction dans la base

Voici le code source.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE FUNCTION calculTaux
(tx IN  TAUX_IPP.decision%Type)
RETURN NUMBER 
begin
 IF :ipp<50 AND  :ipp>=0 then
  :tx:=:ipp/2;
 elsif :ipp>=50 AND  :ipp<=100 then
   :tx:=(50/2) + (:ipp-50)*1.5;
 else
 message('IPP > 100 ou IPP <0');message(' ');
 RETURN(tx);
end IF;
end;
Voici le message d’erreur.

Lors de création :
Citation:
Avertissement : Fonction créée avec erreurs de compilation.
Lors d’exécution :
Citation:
ERREUR à la ligne 1 :
ORA-06550: Ligne 1, colonne 7 :
PLS-00905: l'objet PROJET.CALCULTAUX n'est pas valide
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored
ramzi_iag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 09h28   #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
Faitez show errors en sqlplus pour voire les erreurs à la création du sous-programme.
Pourquois avez vous mis le : devant ipp ?

Code :
1
2
3
 
IF :ipp<50 AND  :ipp>=0 then
  :tx:=:ipp/2;
va générer une exception si ipp est 0.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 15h50   #3
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Citation:
Envoyé par mnitu Voir le message
va générer une exception si ipp est 0.
non, 0/2 = 0, pas de problème.
Par contre, si le diviseur en nul, là il y a un problème : 2/0 = ??
Code :
1
2
3
4
ORA-01476: le diviseur est égal à zéro
01476. 00000 -  "divisor is equal to zero"
*Cause:    
*Action:
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 16h11   #4
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
Citation:
Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
non, 0/2 = 0, pas de problème.
...
Je suis enrhumé aujourd’hui , merci.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/04/2011, 18h17   #5
Invité de passage
 
Homme
maitrisare en informatique appliqué à la gestion
Inscription : mars 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : maitrisare en informatique appliqué à la gestion

Informations forums :
Inscription : mars 2011
Messages : 5
Points : 3
Points : 3
Ça ne marche pas.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 CREATE OR REPLACE FUNCTION calculTaux
 (ipp IN TAUX_IPP.decision%Type )
 RETURN NUMBER IS
 
 taux  NUMBER ;
 begin
  IF ipp<50 AND ipp>=0 then
   taux=ipp/2;
  elsif ipp>=50 AND  ipp<=100 then
    taux=(50/2) + (ipp-50)*1.5;
  else
  dbms_output.put_line('ipp > 100 ou ipp <0');
 end IF;
 RETURN taux;
end;
Message d'erreur :

Citation:
Avertissement : Fonction créée avec erreurs de compilation.
Citation:
ERREUR à la ligne 1 :
ORA-06550: Ligne 1, colonne 7 :
PLS-00905: l'objet PROJET.CALCULTAUX n'est pas valide
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored
ramzi_iag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 08h42   #6
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
Pas besoin de crier on vous entend bien
J’ai vous ai dit d’utiliser show errors, voilà un exemple
Code :
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
 
SQL> CREATE TABLE taux_ipp (
  2    decision number
  3  )
  4  /
 
TABLE created
SQL> CREATE OR REPLACE FUNCTION calculTaux
  2   (ipp IN TAUX_IPP.decision%Type )
  3   RETURN NUMBER IS
  4  
  5   taux  NUMBER ;
  6   begin
  7    IF ipp<50 AND ipp>=0 then
  8     taux=ipp/2;
  9    elsif ipp>=50 AND  ipp<=100 then
 10      taux=(50/2) + (ipp-50)*1.5;
 11    else
 12    dbms_output.put_line('ipp > 100 ou ipp <0');
 13   end IF;
 14   RETURN taux;
 15  end;
 16  /
 
Warning: FUNCTION created WITH compilation errors
 
SQL> SHOW err
Errors FOR FUNCTION MNI.CALCULTAUX:
 
LINE/COL ERROR
-------- ---------------------------------------------------------------------------------------------
8/8      PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants :       := . ( @ % ;  
9/3      PLS-00103: Symbole "ELSIF" rencontré
Regardez la ligne 8 et essayez de corriger l’erreur
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web