WHILE LOOP mit IF STATEMENT MYSQL

Ich möchte eine gespeicherte Routine für MySQL erstellen, die die Anzahl der Geschäfts- oder Arbeitstage pro Monat ermittelt (Arbeitstage sind Montag bis Freitag).

Es ist ein Syntaxfehler, aber ich weiß nicht, was der Syntaxfehler ist. Alles was es mir sagt ist:

1064 - In Ihrer SQL-Syntax ist ein Fehler aufgetreten. In dem Handbuch, das Ihrer MySQL-Serverversion entspricht, finden Sie in Zeile 2 die richtige Syntax für WHILE (@daycount <@totaldays) DO IF (WEEKDAY (@checkweekday) <6) THEN

Mein Syntaxfehler ist folgender:

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

Mein Code:

      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;

Kann jemand helfen?

AKTUALISIEREN Ich erhalte den gleichen Fehler mit dem folgenden Codebit, so dass es wahrscheinlich etwas damit zu tun hat:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage