다음은 IF 문으로 MySQL WHILE LOOP를 구현하는 예이다. 저장 프로시저에서 사용 중입니다.
다음은 저장 프로시저를 만드는 쿼리입니다.
mysql> DELIMITER // mysql> create procedure sp_getDaysDemo() -> BEGIN -> SELECT MONTH(CURDATE()) INTO @current_month; -> SELECT MONTHNAME(CURDATE()) INTO @current_monthname; -> SELECT DAY(LAST_DAY(CURDATE())) INTO @total_numberofdays; -> SELECT CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)INTO @check_weekday; -> SELECT DAY(@check_weekday) INTO @check_day; -> SET @count_days = 0; -> SET @workdays = 0; -> -> WHILE(@count_days < @total_numberofdays) DO -> IF (WEEKDAY(@check_weekday) < 5) THEN -> SET @workdays = @workdays+1; -> END IF; -> SET @count_days = @count_days+1; -> SELECT ADDDATE(@check_weekday, INTERVAL 1 DAY) INTO @check_weekday; -> END WHILE; -> -> select @current_month,@current_monthname,@total_numberofdays,@check_weekday,@check_day; -> END -> -> // Query OK, 0 rows affected (0.24 sec) mysql> delimiter ;
CALL 명령을 사용하여 저장 프로시저를 호출합니다. 구문은 다음과 같습니다.
CALL yourStoredProcedureName();
이제 다음 쿼리를 사용하여 저장 프로시저를 호출할 수 있습니다.
mysql> call sp_getDaysDemo();
다음은 출력입니다.
+----------------+--------------------+---------------------+----------------+------------+ | @current_month | @current_monthname | @total_numberofdays | @check_weekday | @check_day | +----------------+--------------------+---------------------+----------------+------------+ | 1 | January | 31 | 2019-02-01 | 1 | +----------------+--------------------+---------------------+----------------+------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.02 sec)