Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 17/04/2007, à 16:49

blt909

Pb avec procédures stockées MySQL

Boujour à tous,
j'ai migré dernièrement une BDD depuis Mysql Community sous Win2003 Server sur Dapper Drake LTS,
mais depuis toutes mes procédures plantent avec ce message d'erreur:

Error Code : 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 1

pourtant je n'ai rien changé d'une plateforme à l'autre ...
j'ajoute un exemple de procédure simple sur laquelle l'erreur s'est produite:

DELIMITER $$

DROP PROCEDURE IF EXISTS `erp2`.`add_tour`$$

CREATE DEFINER=`sebastien.coget`@`%` PROCEDURE `add_tour`()
BEGIN
        DECLARE done INT DEFAULT 0;
        declare xcodeclient varchar(6);
        declare xordresite tinyint;
        declare xt1 tinyint(1);
        declare xt2 tinyint(1);
        declare xt3 tinyint(1);
        declare xt4 tinyint(1);
        declare xta tinyint(1);
        declare xtb tinyint(1);
        declare xtc tinyint(1);
        declare xtville varchar(50);
	declare xadr1 varchar(50);
	declare xadr2 varchar(50);
	declare xadr4 varchar(50);
        declare xetab_id integer(10) default 0;
        declare xvill_id integer(10) default 0;
        DECLARE cur1 CURSOR FOR SELECT codeclient, ordresite, t1, t2, t3, t4, ta, tb, tc, tville, adr1, adr2, adr4
                                                        FROM groupegc_dev.clients  order by codeclient, ordresite;
        DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
        delete from erp2.ville;
        insert into erp2.ville (vill_lib) select distinct tville from groupegc_dev.clients;
        
        open cur1;
        REPEAT
        FETCH cur1 INTO xcodeclient, xordresite, xt1, xt2, xt3, xt4, xta, xtb, xtc, xtville, xadr1, xadr2, xadr4;
                IF NOT done THEN
                        select vill_id into xvill_id from erp2.ville where vill_lib=xtville;
			if xt1 is null then set xt1=0; end if;
			if xt2 is null then set xt2=0; end if;
			if xt3 is null then set xt3=0; end if;
			if xt4 is null then set xt4=0; end if;
			if xta is null then set xta=0; end if;
			if xtb is null then set xtb=0; end if;
			if xtc is null then set xtc=0; end if;
			/*select etab_id into xetab_id from erp2.etablissement where etab_numold=xcodeclient and (concat(etab_lib,etab_adr1)=concat(xadr1,xadr2) or etab_ordresite=xordresite);*/
                        insert into erp2.tournee_theorique (FKetab_id, FKvill_id, theo_t1, theo_t2, theo_t3, theo_t4, theo_ta, theo_tb, theo_tc, theo_ville, theo_numold, theo_ordresite) 
                                        values (xetab_id, xvill_id, xt1, xt2, xt3, xt4, xta, xtb, xtc, xtville, xcodeclient, xordresite);
                end if;
        UNTIL done END REPEAT;
        CLOSE cur1;
    END$$

DELIMITER ;

Cela vient-il de ma config serveur ou du code à votre avis?

Merci d'avance pour vos conseils.

Hors ligne

Haut de page ↑