Chciałbym utworzyć przechowywaną procedurę dla MySQL, która określa liczbę dni roboczych lub roboczych w miesiącu (Dni robocze to od poniedziałku do piątku).PODCZAS PĘTLI, JEŚLI ZNAJDUJE SIĘ MYSQL
Jest to błąd składniowy, ale nie wiem, jaki jest błąd składni. Wszystko mi mówi:
1064 - Masz błąd w składni SQL; należy sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używaną pobliżu 'while (@daycount < @totaldays) DO IF (DZIEŃ.TYG (@checkweekday) < 6) Then' at line 2
Moja błąd składni jest w następujących przypadkach:
WHILE(@daycount < @totaldays) DO
IF (WEEKDAY(@checkweekday) < 6) THEN
mój kod:
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;
Czy ktoś w stanie pomóc?
UPDATE otrzymuję ten sam błąd z poniższego fragmentu kodu, więc prawdopodobnie ma coś wspólnego z tym:
SET @workdays = 0;
IF (WEEKDAY('2013-06-13') < 6) THEN
SET @workdays = @workdays+1;
END IF;
SELECT @workdays;
Czy masz funkcję "FIRST_DAY()"? –
Tak, robię. Serwer internetowy faktycznie ma tę funkcję automatycznie. Napisałem swój własny i zdałem sobie sprawę, że gdy używam funkcji bez mojej nadal działa. Funkcja first_day() nie jest tam, gdzie jest błąd. Przekazuje go bez problemu. – scrfix