WHILE LOOP con IF STATEMENT MYSQL

Me gustaría crear una rutina almacenada para MySQL que calcule la cantidad de días hábiles o laborales de un mes (los días laborables son de lunes a viernes).

Es un error de sintaxis, sin embargo, no sé cuál es el error de sintaxis. Todo lo que me dice es:

1064: tiene un error en la sintaxis de SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'WHILE (@daycount <@totaldays) DO IF (WEEKDAY (@checkweekday) <6) LUEGO' en la línea 2

Mi error de sintaxis es el siguiente:

    WHILE(@daycount < @totaldays) DO
          IF (WEEKDAY(@checkweekday) < 6) THEN

Mi código:

      SELECT MONTH(CURDATE()) INTO @curmonth;
      SELECT MONTHNAME(CURDATE()) INTO @curmonthname;
      SELECT DAY(LAST_DAY(CURDATE())) INTO @totaldays;
      SELECT FIRST_DAY(CURDATE()) INTO @checkweekday;
      SELECT DAY(@checkweekday) INTO @checkday;
      SET @daycount = 0;
      SET @workdays = 0;

    BEGIN
      WHILE(@daycount < @totaldays) DO
          IF (WEEKDAY(@checkweekday) < 6) THEN
            SET @workdays = @workdays+1;
          END IF;
          SET @daycount = @daycount+1;
          SELECT ADDDATE('@checkweekday', INTERVAL 1 DAY) INTO @checkweekday;
      END WHILE;
    END;
    SELECT @workdays;

¿Alguien puede ayudar?

ACTUALIZAR Recibo el mismo error con el siguiente bit de código, así que probablemente tenga algo que ver con esto:

    SET @workdays = 0;
    IF (WEEKDAY('2013-06-13') < 6) THEN
      SET @workdays = @workdays+1;
    END IF;
    SELECT @workdays;

Respuestas a la pregunta(1)

Su respuesta a la pregunta