Ik heb ontdekt dat je geen conditionals kunt hebben buiten de opgeslagen procedure in mysql. Dit is de reden waarom de syntaxisfout. Zodra ik de code die ik nodig had tussen
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
Alleen voor anderen :
Als u niet zeker weet hoe u een routine in phpmyadmin moet maken, kunt u deze in de SQL-query plaatsen
delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;
Voer de query uit. Hierdoor wordt een opgeslagen procedure of opgeslagen routine met de naam test2 gemaakt. Ga nu naar het tabblad routines en bewerk de opgeslagen procedure om te zijn wat je wilt. Ik raad ook aan om http://net.tutsplus.com/ te lezen tutorials/an-introduction-to-stored-procedures/ als u begint met opgeslagen procedures.
De first_day-functie die je nodig hebt is:Hoe krijg ik de eerste dag van elke corresponderende maand in mysql?
Toon dat de procedure werkt Voeg eenvoudig de volgende regel toe onder END WHILE en boven END
SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;
Gebruik dan de volgende code in het SQL-queryvenster.
call test2 /* or whatever you changed the name of the stored procedure to */
OPMERKING: Als u dit gebruikt, houd er dan rekening mee dat deze code geen rekening houdt met nationale feestdagen (of welke feestdagen dan ook).