Procedures stockées

cs_bendji Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 mai 2008 - 25 mai 2008 à 15:48
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 26 mai 2008 à 23:23
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

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 17:06
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é !
0
cs_bendji Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 mai 2008
25 mai 2008 à 18:32
sibendji

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

merci quand même !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 18:39
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é !
0
cs_bendji Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 mai 2008
25 mai 2008 à 18:49
sibendji

Désolé, je n'ai pas vu le morceau de code en question...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 18:56
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é !
0
cs_bendji Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 mai 2008
25 mai 2008 à 20:15
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
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 mai 2008 à 20:58
c'est quoi la ligne 3 ?

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
cs_bendji Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 mai 2008
25 mai 2008 à 21:26
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;
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 mai 2008 à 06:28
ba je vois pas alors...

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 mai 2008 à 19:07
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.
0
cs_bendji Messages postés 6 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 26 mai 2008
26 mai 2008 à 23:15
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.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 mai 2008 à 23: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.
0
Rejoignez-nous