Odkryłem, że nie można używać warunków warunkowych poza procedurą składowaną w mysql. Dlatego błąd składni. Jak tylko wstawię potrzebny kod między
BEGIN
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;
WHILE(@daycount < @totaldays) DO
IF (WEEKDAY(@checkweekday) < 5) THEN
SET @workdays = @workdays+1;
END IF;
SET @daycount = @daycount+1;
SELECT ADDDATE(@checkweekday, INTERVAL 1 DAY) INTO @checkweekday;
END WHILE;
END
Tylko dla innych :
Jeśli nie jesteś pewien, jak utworzyć procedurę w phpmyadminie, możesz umieścić to w zapytaniu SQL
delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;
Uruchom zapytanie. Spowoduje to utworzenie procedury składowanej lub procedury składowanej o nazwie test2. Teraz przejdź do zakładki procedur i edytuj procedurę składowaną, aby była taka, jak chcesz. Proponuję również przeczytać http://net.tutsplus.com/ tutoriale/wprowadzenie-do-przechowywanych-procedur/ jeśli zaczynasz z procedurami składowanymi.
Potrzebna funkcja pierwszego dnia to:Jak uzyskać pierwszy dzień każdego miesiąca w mysql?
Pokazuje, że procedura działa Po prostu dodaj następującą linię poniżej END WHILE i powyżej END
SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;
Następnie użyj następującego kodu w oknie zapytań SQL.
call test2 /* or whatever you changed the name of the stored procedure to */
UWAGA: Jeśli użyjesz tego, pamiętaj, że ten kod nie uwzględnia świąt obchodzonych w kraju (ani żadnych świąt w tym zakresie).