如何在 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 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)

更新於: 30-Jul-2019

440 次瀏覽

開啟你的 職業生涯

透過完成課程並獲得認證

開始學習
廣告
© . All rights reserved.