MySQL学习笔记:while循环

  思考:while循环是否只能使用在存储过程或者存储函数之中,不能直接在查询语句中使用?

  ———— 循环一般在存储过程和存储函数中使用。


  直接放几个例子:

  例一:

  1.创建存储过程

复制代码
DELIMITER $$
CREATE PROCEDURE test_while_001(IN in_count INT) # 创建存储过程 学习while循环的用法
BEGIN
    DECLARE COUNT INT DEFAULT 0;
    DECLARE SUM INT DEFAULT 0;
    WHILE COUNT < in_count DO
        SET SUM = SUM + COUNT;
        SET COUNT = COUNT + 1;
    END WHILE;
    SELECT SUM;
END $$
DELIMITER ;
复制代码

  2.调用存储过程

CALL test_while_001(10); # 45 输出

  3.删除存储过程

DROP PROCEDURE test_while_001;

 

 

例二:

  1.创建函数

复制代码
DELIMITER $$
CREATE FUNCTION my_test_function(quantity INT(10)) RETURNS INT(10) # 创建函数 学习while循环的用法
BEGIN
    WHILE quantity MOD 12 > 0 DO
        SET quantity = quantity + 1;
    END WHILE;
    RETURN quantity;
END $$
DELIMITER ;
复制代码

  注意:创建函数之前必须更改系统设置 否则无法创建函数

SET GLOBAL log_bin_trust_function_creators=TRUE;

  2.调用函数

SELECT my_test_function(10);
SELECT my_test_function(24);
SELECT my_test_function(222);

  3.删除函数

DROP FUNCTION my_test_function;

 

  

  例三:

  1.如果存在,则删除

DROP PROCEDURE IF EXISTS u_head_and_low_pro;

  2.创建存储过程

复制代码
DELIMITER $$
CREATE PROCEDURE u_head_and_low_pro()
BEGIN
    DECLARE n INT DEFAULT 10;
    SET n = n - 1;
    WHILE n > 0 DO
        SELECT n;
        SET n = n - 1;
    END WHILE;
END $$
DELIMITER ;
复制代码

  3.调用存储过程

CALL u_head_and_low_pro();

  4.删除存储过程

DROP PROCEDURE u_head_and_low_pro;

  注:不依赖于任何数据库表,完整展示变量、while语句、存储过程的用法。


 

 

  例四:

复制代码
# 创建存储过程
DELIMITER $$ CREATE PROCEDURE test_while() BEGIN DECLARE SUM INT DEFAULT 0; DECLARE t INT DEFAULT 5; WHILE t > 0 DO SET SUM = SUM + t; SET t = t - 1; END WHILE; SELECT SUM; END $$ DELIMITER ; # 调用存储过程 CALL test_while(); # 15 # 删除 DROP PROCEDURE test_while;
posted @ 2020-08-06 18:51  八英里  阅读(2640)  评论(0编辑  收藏  举报