Открих, че не можете да имате условни условия извън съхранената процедура в mysql. Ето защо синтактичната грешка. Веднага след като поставя кода, който ми трябваше между
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
Само за други :
Ако не сте сигурни как да създадете рутина в phpmyadmin, можете да поставите това в SQL заявката
delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;
Изпълнете заявката. Това ще създаде съхранена процедура или съхранена рутина с име test2. Сега отидете в раздела рутини и редактирайте съхранената процедура, за да бъде това, което искате. Предлагам също да прочетете http://net.tutsplus.com/ уроци/въведение-в-съхранените-процедури/ ако започвате със запомнени процедури.
Функцията first_day, от която се нуждаете, е:Как да получа първия ден от всеки съответен месец в mysql?
Показва се, че процедурата работи Просто добавете следния ред под END WHILE и над END
SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;
След това използвайте следния код в прозореца на SQL заявката.
call test2 /* or whatever you changed the name of the stored procedure to */
ЗАБЕЛЕЖКА: Ако използвате това, моля, имайте предвид, че този код не взема под внимание националните празници (или всякакви празници в този смисъл).