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関数は次のとおりです。
手順の表示が機能している ENDWHILEの下とENDの上に次の行を追加するだけです
SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;
次に、SQLクエリウィンドウで次のコードを使用します。
call test2 /* or whatever you changed the name of the stored procedure to */
注: これを使用する場合、このコードは全国的に観察される休日(またはそれに関する休日)を考慮に入れていないことに注意してください。