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
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
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;
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.
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...
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.