Ho scoperto che non puoi avere condizionali al di fuori della stored procedure in mysql. Questo è il motivo per cui l'errore di sintassi. Non appena ho inserito il codice che mi serviva in mezzo
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
Solo per gli altri :
Se non sei sicuro di come creare una routine in phpmyadmin puoi inserirlo nella query SQL
delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;
Esegui la query. Questo creerà una procedura memorizzata o una routine memorizzata denominata test2. Ora vai alla scheda delle routine e modifica la procedura memorizzata in modo che sia ciò che desideri. Suggerisco anche di leggere http://net.tutsplus.com/ tutorial/un-introduzione-alle-procedure-memorizzate/ se stai iniziando con le stored procedure.
La funzione primo_giorno di cui hai bisogno è:Come ottenere il primo giorno di ogni mese corrispondente in mysql?
Mostrare la procedura funziona Aggiungi semplicemente la riga seguente sotto END WHILE e sopra END
SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;
Quindi utilizzare il codice seguente nella finestra delle query SQL.
call test2 /* or whatever you changed the name of the stored procedure to */
NOTA: Se lo utilizzi, tieni presente che questo codice non tiene conto delle festività osservate a livello nazionale (o di qualsiasi festività per quella materia).