2012-11-12 4 views
0

Je reçois une erreur de syntaxe avec ceci en raison de la boucle while finale. J'ai essayé de le changer autour mais ne peux pas trouver le problème ici - est-ce purement que MySQL ne soutient pas si des déclarations dans des boucles de temps?While boucle avec if instruction dans MySQL

DELIMITER // 
CREATE PROCEDURE bLAHbLAHbLAH(p_fromdate datetime, p_todate datetime) 
BEGIN 

Declare startday datetime; 
declare numberofdays int; 
declare Counter int; 

Set startday = p_fromdate; 
Set numberofdays = (select datediff("2012-05-01","2012-11-01")); 
Set Counter = 0; 

WHILE startday<p_todate DO 
    if (select date_format(startday, '%W')) in ('Monday','Tuesday','Wednesday','Thursday','Friday') THEN 
     SET Counter = Counter+1; 
     SET startday = date_add(startday, INTERVAL 1 DAY); 
    else 
     SET startday = date_add(startday, INTERVAL 1 DAY); 
END WHILE; 

select Counter; 

END// 

DELIMITER ; 
+0

Croyez-le ou pas fait. Excuses – user1818768

Répondre

2

Vous avez oublié un

end if; 

avant la end while

WHILE startday<p_todate DO 
    if (select date_format(startday, '%W')) in ('Monday','Tuesday','Wednesday','Thursday','Friday') THEN 
     SET Counter = Counter+1; 
     SET startday = date_add(startday, INTERVAL 1 DAY); 
    else 
     SET startday = date_add(startday, INTERVAL 1 DAY); 
    end if;             /*add this line*/ 
END WHILE; 
+0

Vous êtes une star, merci beaucoup. Je n'ai même pas réalisé que vous deviez explicitement mettre fin à une instruction if dans MySQL! Doh !! 0 – user1818768

Questions connexes