Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để triển khai WHILE LOOP với IF STATEMENT MySQL?

Sau đây là một ví dụ để triển khai MySQL WHILE LOOP với câu lệnh IF. Chúng tôi đang sử dụng trong một quy trình được lưu trữ

Sau đây là truy vấn để tạo thủ tục được lưu trữ của chúng tôi:

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 ;

Gọi thủ tục đã lưu bằng lệnh CALL. Cú pháp như sau:

CALL yourStoredProcedureName();

Bây giờ bạn có thể gọi thủ tục được lưu trữ bằng cách sử dụng truy vấn sau:

mysql> call sp_getDaysDemo();

Sau đây là kết quả:

+----------------+--------------------+---------------------+----------------+------------+
| @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)