Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

นำ WHILE LOOP มาใช้กับ IF STATEMENT ใน MySQL


ตัวอย่างการใช้ WHILE LOOP ร่วมกับ IF STATEMENT ใน MySQL Stored Procedure

Stored Procedure คำนวณวันทำงานในเดือนปัจจุบัน

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 ;

เรียกใช้ Procedure:

mysql> CALL sp_getDaysDemo();

ผลลัพธ์ (ตัวอย่างเดือนมกราคม 31 วัน):

+----------------+--------------------+---------------------+----------------+------------+ | @current_month | @current_monthname | @total_numberofdays | @check_weekday | @check_day | +----------------+--------------------+---------------------+----------------+------------+ | 1              | January            | 31                  | 2019-02-01     | 1          | +----------------+--------------------+---------------------+----------------+------------+

Procedure นี้นับจำนวนวันทำงาน (จันทร์-ศุกร์) ในเดือนปัจจุบัน โดยวนลูปทุกวันและเช็ค WEEKDAY