MySQL 如何使用 IF 语句实现 WHILE 循环
下面是一个使用 IF 语句实现 MySQL WHILE 循环的例子。我们将在一个存储过程中使用它。
下面是创建这个存储过程的查询语句:
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 你的存储过程名称();
现在可以使用以下查询语句调用存储过程:
mysql> call sp_getDaysDemo();
下面是输出结果:
+----------------+--------------------+---------------------+----------------+------------+
| @current_month | @current_monthname | @total_numberofdays | @check_weekday | @check_day |
+----------------+--------------------+---------------------+----------------+------------+
| 1 | 一月 | 31 | 2019-02-01 | 1 |
+----------------+--------------------+---------------------+----------------+------------+
1 行记录(0.00 秒)
Query OK, 0 rows affected (0.02 sec)
阅读更多:MySQL 教程
极客教程