zoukankan      html  css  js  c++  java
  • 009-MySQL循环while、repeat、loop使用

    一、循环使用

    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();                            #调用存储过程
     
  • 相关阅读:
    ExecutorService 和 NSOperationQueue
    Android 中的AsyncTask
    正则表达式里"-"中划线的使用注意
    Android studio 程序升级和sdk manager 升级方法
    推荐一篇java抽象类和接口区别的文章
    Android measure和layout的一点理解
    Android 屏幕旋转
    Android 中的openurl
    UML 序列图一点理解
    Android Studio中的Module,Facet
  • 原文地址:https://www.cnblogs.com/bjlhx/p/11947291.html
Copyright © 2011-2022 走看看