009-MySQL循环whilerepeatloop使用

Posted 木子旭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了009-MySQL循环whilerepeatloop使用相关的知识,希望对你有一定的参考价值。

一、循环使用

mysql常见的三种循环方式:while、repeat和loop循环。还有一种goto,不推荐使用。

前提1、创建基本表结构

# 创建表结构
drop table if exists `test_table`;
create table `test_table`(  
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 自增主键,
  `modelid` varchar(50) COMMENT 字符主键,
  `modelname` varchar(50) COMMENT 名称,
  `desc` varchar(50) COMMENT 描述,
  primary key (`id`)
) ENGINE=InnoDB charset=utf8 collate=utf8_bin;

1.1、while循环

delimiter //  #定义标识符为双斜杠
DROP PROCEDURE IF EXISTS my_procedure ; #如果存在 my_procedure 存储过程则删除
CREATE PROCEDURE my_procedure () #创建无参存储过程
BEGIN
DECLARE n INT DEFAULT 1 ; #申明变量
WHILE n <= 10 DO     #结束循环的条件:
    insert into test_table (modelid,modelname,`desc`) 
        value (n,CONCAT(name,n),desc);   #处理语句
    SET n = n + 1 ; #循环一次,i加一
END WHILE ; #结束while循环
    select count(*) from test_table;
END
//             
delimiter ;
call my_procedure(); #调用存储过程

1.2、repeat

delimiter //                            #定义标识符为双斜杠
drop procedure if exists my_procedure;          #如果存在test存储过程则删除
create procedure my_procedure()                 #创建无参存储过程,名称为test
begin
    declare n int default 1;                      #申明变量
    # set i = 0;                          #变量赋值
    repeat
        insert into test_table (modelid,modelname,`desc`) 
        value (n,CONCAT(name,n),desc); 
        set n = n + 1;                  #循环一次,i加一
    until n > 10 end repeat;            #结束循环的条件: 当i大于10时跳出repeat循环
    select count(*) from test_table;                 #查看test表数据
end
//                                      #结束定义语句
call my_procedure();                            #调用存储过程

1.3、loop

delimiter //                            #定义标识符为双斜杠
drop procedure if exists my_procedure;          #如果存在test存储过程则删除
create procedure my_procedure()                 #创建无参存储过程,名称为test
begin
    declare i int;                      #申明变量
    set i = 1;                          #变量赋值
    lp : loop                           #lp为循环体名,可随意 loop为关键字
        insert into test_table (modelid,modelname,`desc`) 
        value (i,CONCAT(name,i),desc); 
        set i = i + 1;                  #循环一次,i加一
        if i > 10 then                  #结束循环的条件: 当i大于10时跳出loop循环
            leave lp;
        end if; 
    end loop;
    select count(*) from test_table;                 #查看test表数据
end
//                                      #结束定义语句
call my_procedure();                            #调用存储过程

 

 

 

 

 

以上是关于009-MySQL循环whilerepeatloop使用的主要内容,如果未能解决你的问题,请参考以下文章

莫名奇妙的异常009:mysql row size too large>8126

莫名奇妙的异常009:mysql row size too large>8126

C++入门基础知识[3]——循环嵌套循环无限循环

python-循环(while循环for循环)

循环结构进阶(二重循环)和冒泡排序

for 循环与while循环的区别