Jag har upptäckt att du inte kan ha villkor utanför den lagrade proceduren i mysql. Det är därför syntaxfelet. Så snart jag lagt koden som jag behövde mellan
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
Bara för andra :
Om du inte är säker på hur du skapar en rutin i phpmyadmin kan du lägga detta i SQL-frågan
delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;
Kör frågan. Detta kommer att skapa en lagrad procedur eller lagrad rutin med namnet test2. Gå nu till fliken rutiner och redigera den lagrade proceduren så att den blir vad du vill ha. Jag föreslår också att du läser http://net.tutsplus.com/ självstudier/en-introduktion-till-lagrade-procedurer/ om du börjar med lagrade procedurer.
Den första_dagsfunktionen du behöver är:Hur får man första dagen i varje motsvarande månad i mysql?
Visning av proceduren fungerar Lägg bara till följande rad under END WHILE och ovanför END
SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;
Använd sedan följande kod i SQL Query Window.
call test2 /* or whatever you changed the name of the stored procedure to */
OBS: Om du använder detta, kom ihåg att denna kod inte tar hänsyn till nationellt observerade helgdagar (eller helgdagar för den delen).