Procedures stockées

Signaler
Messages postés
6
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2008
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
bonjour à tous

j'avais crée une procedure stockée dans la version antérieure de mysql qui fonctionnait bien.Depuis que j'ai télécharger une nouvelle version, j'ai essayé d'importer ma procedure, je reçois toujours des messages d'erreur:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'in idchev INTEGER)

voici la procedure en question (fonction)

CREATE DEFINER=`root`@`localhost` FUNCTION `calculgain`(p_tqq BOOL,p_alloc DOUBLE,p_rang INT) RETURNS double
begin
declare gain DOUBLE;
declare v_tqq BOOL;
declare v_alloc DOUBLE;
declare v_rang INT;

set v_tqq=p_tqq;
set v_alloc=p_alloc;
set v_rang=P_rang;

if(v_tqq) then
case(v_rang)
when 1 then set gain=v_alloc*47/100;
when 2 then set gain=v_alloc*19/100;
when 3 then set gain=v_alloc*14/100;
when 4 then set gain=v_alloc*9/100;
when 5 then set gain=v_alloc*5.5/100;
when 6 then set gain=v_alloc*3.5/100;
when 7 then set gain=v_alloc*2/100;
else set gain=v_alloc*0/100;
end case;
else
case(v_rang)
when 1 then set gain=v_alloc*50/100;
when 2 then set gain=v_alloc*20/100;
when 3 then set gain=v_alloc*15/100;
when 4 then set gain=v_alloc*10/100;
when 5 then set gain=v_alloc*5/100;
else set gain=v_alloc*0/100;
end case;
end if;
return gain;
end

si quelqu'un peut m'aider... je galère depuis un moment. merci d'avance

12 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
Salut,

tu as une erreur de syntax, qui se trouve près de "in idchev INTEGER" seuleument, je ne vois pas ce morceau de code !

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
6
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2008

sibendji

j'ai déjà cherché dans cette direction, mais je ne vois pas exactement ce que c'est...

merci quand même !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
oui mais ou se trouve le morceau de code que je t'ai écris plus haut ?

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
6
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2008

sibendji

Désolé, je n'ai pas vu le morceau de code en question...
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
tu ne l'a pas vu ou ici ou dans ton code ?

in idchev INTEGER

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
6
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2008

sibendji

Excusez-moi , je crois que j'ai la tête en bouillie: c'était le même genre de réponse à un autre bout de code .  le vrai message d'erreur est ci-dessous

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
c'est quoi la ligne 3 ?

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
6
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2008

sibendji

je viens d'exécuter la requête et voici de nouveau le message d'erreur:

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3



la ligne 3 la voici:



CREATE  FUNCTION calculgain(p_tqq BOOL,p_alloc DOUBLE,p_rang INT) RETURNS double
begin
declare gain DOUBLE;// la ligne 3
declare v_tqq BOOL;
declare v_alloc DOUBLE;
declare v_rang INT;
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ba je vois pas alors...

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

au vu du message, je doute que le problème vienne de cette procédure stockée. Mysql te parle d'une chaîne : ''
et il n'y a pas ce genre de chaîne dans ta procédure stockée.
Messages postés
6
Date d'inscription
vendredi 27 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2008

sibendji

Je pense aussi que le problème vient de la mise à jour de MySQL, car cette procedure fonctionnait normalement avant que je ne télécharge la version récente de MySQL...

merci tout de même.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ce n'est pas ce que j'ai dit : l'erreur que te donne mysql ne correspond à rien qui soit présent dans ta procédure stockée. A mon avis, ce n'est pas elle qui provoque cette erreur mais une autre requête/procédure.