MySQL WHILE 循环
在此,我们将介绍 MySQL WHILE Loop 的概述,然后将介绍每个示例的算法,然后将看到每个示例的分析。让我们一一讨论。
介绍 :
MySQL WHILE 循环语句用于一次又一次地执行一个或多个语句,只要条件为真。当我们需要在条件为真时重复执行任务时,我们可以使用循环。
笔记 -
如果您不确定希望循环体执行的次数,请使用 WHILE LOOP 语句。由于 WHILE 条件在进入循环之前被评估,循环体可能不会执行一次。
句法 :
[label_name:] WHILE
condition DO
statements_list
END WHILE [label_name]
语法标签含义 –
- 标签名称 –
标签名称 是可选的,它是与 WHILE 循环相关的名称。 - 健康)状况 -
健康)状况 每个都经过 WHILE 循环进行测试。如果条件结果为 TRUE,则执行 statements_list,或者如果条件结果为 FALSE,则终止 WHILE 循环。 - Statements_list –
Statements_list 是要执行的语句列表,可以承受 WHILE 循环。
While 循环框图:
MySQL WHILE 循环示例:
示例-1:
让我们使用 while 循环创建一个函数。
DELIMITER $$
CREATE FUNCTION GeekInc ( value INT )
RETURNS INT
BEGIN
DECLARE inc INT;
SET inc = 0;
label:
WHILE inc <= 30000 DO
SET inc = inc + value;
END
WHILE label;
RETURN inc;
END; $$
DELIMITER ;
分析 -
- 值是 GeekInc函数的输入。
- inc 已声明并设置为 0。
- 当 inc 小于等于 3000 时,它会将 inc 设置为 inc + value。
要检查输出,请使用下面给出的以下命令。
CALL GeekInc(10000);
输出 -
0, 10000, 20000, 30000
示例 2 :
让我们使用 while 循环创建一个过程。
DELIMITER $$
CREATE procedure while_ex()
block: BEGIN
declare value VARCHAR(20) default ' ' ;
declare num INT default 0;
SET num = 1;
WHILE num <= 5 DO
SET value = CONCAT(value, num ,',' );
SET num = num + 1;
END
WHILE block;
select value ;
END $$
DELIMITER ;
分析 -
- 创建过程 while_ex 并声明 value 和 num。
- 设置 num 为 1,而 num 等于或小于 5 do
- 设置 value 等于 value 和 num 的串联。
要检查输出,请使用下面给出的以下命令。
call while_ex();
输出 -value 1,2,3,4,5
示例 3 :
让我们创建一个表“Test_Cal”,其日期如下。
CREATE TABLE Test_Cal(
t_in INT AUTO_INCREMENT,
fulldate DATE UNIQUE,
day TINYINT NOT NULL,
month TINYINT NOT NULL,
PRIMARY KEY(id)
);
现在,创建一个存储过程以将数据插入表中,如下所示。
DELIMITER $$
CREATE PROCEDURE InsertCal(dt DATE)
BEGIN
INSERT INTO Test_Cal(
fulldate,
day,
month )
VALUES(dt,
EXTRACT(DAY FROM dt),
EXTRACT(MONTH FROM dt)
);
END$$
DELIMITER ;
现在创建存储过程 LoadCal(),它将从开始日期开始的天数更新到表中。
DELIMITER $$
CREATE PROCEDURE LoadCal(
startDate DATE,
day INT
)
BEGIN
DECLARE counter INT DEFAULT 1;
DECLARE dt DATE DEFAULT startDate;
WHILE counter <= day DO
CALL InsertCal(dt);
SET counter = counter + 1;
SET dt = DATE_ADD(dt,INTERVAL 1 day);
END WHILE;
END$$
DELIMITER ;
分析 -
- 存储过程 LoadCal() 有两个参数:startDate 和 day。
- 首先,声明一个用于保存值的计数器和 dt 变量。
- 然后,检查计数器是否小于或等于天,如果是:
- 运行存储过程 Inertial() 以在 Test_Cal 表中插入一行。
- 使用 DATE_ADD() 将计数器增加 1 会使 dt 增加 1 天。
- WHILE 循环将日期插入表中,直到计数器与日期相同。
要检查输出,请使用下面给出的以下命令。
CALL LoadCal('2021-01-01',31);
select * from Test_Cal where tid < 10 ;
输出 -t_id fulldate day month 1 2021-01-01 1 1 2 2021-01-02 2 1 3 2021-01-03 3 1 4 2021-01-04 4 1 5 2021-01-05 5 1 6 2021-01-06 6 1 7 2021-01-07 7 1 8 2021-01-08 8 1 9 2021-01-09 9 1