zoukankan      html  css  js  c++  java
  • 第七节:循环结构

    一、循环结构

      1、循环结构

          程序在满足一定条件的基础上,重复执行一段代码。

          循环结构只能放在 begin end 中!

      2、分类

          while、loop、repeat

      3、循环控制

        iterate:类似于 continue,继续,结束本次循环,继续下一次。

        leave:类似于 break;跳出,结束当前所在的循环。

      4、三种循环的对比

        (1)这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称;

        (2)loop 一般用于实现简单的死循环;

            while 先判断后执行;

           repeat 先执行后判断,无条件至少执行一次;

    二、while 循环

      1、语法格式

    【标签:】while 循环条件 do
    	循环体;
    end while【标签】;
    

      

    三、loop 循环

      1、语法结构

    【标签:】loop
    	循环体;
    end loop 【标签】;
    

        可以用来模拟简单的死循环。

    四、repeat 循环

      1、语法结构

    【标签:】repeat
    	循环体;
    until 结束循环的条件
    end repeat 【标签】;
    

      

    五、案例

      1、批量插入,根据次数插入到 admin 表中多条记录

        没有添加循环控制语句:

     1 DROP PROCEDURE pro_while1$
     2 CREATE PROCEDURE pro_while1(IN insertCount INT)
     3 BEGIN
     4     DECLARE i INT DEFAULT 1;
     5     WHILE i<=insertCount DO
     6         INSERT INTO admin(username,`password`) VALUES(CONCAT('Rose',i),'666');
     7         SET i=i+1;
     8     END WHILE;
     9     
    10 END $
    11 
    12 CALL pro_while1(100)$

      2、批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止

        使用标签和leave语句:

     1 TRUNCATE TABLE admin$
     2 DROP PROCEDURE test_while1$
     3 CREATE PROCEDURE test_while1(IN insertCount INT)
     4 BEGIN
     5     DECLARE i INT DEFAULT 1;
     6     a:WHILE i<=insertCount DO
     7         INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');
     8         IF i>=20 THEN LEAVE a;
     9         END IF;
    10         SET i=i+1;
    11     END WHILE a;
    12 END $
    13 
    14 
    15 CALL test_while1(100)$

      3、批量插入,根据次数插入到admin表中多条记录,只插入偶数次

        使用 iterate 语句和标签

     1 TRUNCATE TABLE admin$
     2 DROP PROCEDURE test_while1$
     3 CREATE PROCEDURE test_while1(IN insertCount INT)
     4 BEGIN
     5     DECLARE i INT DEFAULT 0;
     6     a:WHILE i<=insertCount DO
     7         SET i=i+1;
     8         IF MOD(i,2)!=0 THEN ITERATE a;
     9         END IF;
    10         
    11         INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');
    12         
    13     END WHILE a;
    14 END $
    15 
    16 
    17 CALL test_while1(100)$

      4、流程控制综合案例

        已知表stringcontent,其中字段:id 自增长,content varchar(20)。向该表插入指定个数的,随机的字符串:

        (1)创建表:

    1 DROP TABLE IF EXISTS stringcontent;
    2 
    3 CREATE TABLE stringcontent(
    4     id INT PRIMARY KEY AUTO_INCREMENT,
    5     content VARCHAR(20)
    6     
    7 );

        (2)创建存储结构

     1 DELIMITER $
     2 CREATE PROCEDURE test_randstr_insert(IN insertCount INT)
     3 BEGIN
     4     DECLARE i INT DEFAULT 1;
     5     DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
     6     DECLARE startIndex INT;#代表初始索引
     7     DECLARE len INT;#代表截取的字符长度
     8     WHILE i<=insertcount DO
     9         SET startIndex=FLOOR(RAND()*26+1);#代表初始索引,随机范围1-26
    10         SET len=FLOOR(RAND()*(20-startIndex+1)+1);#代表截取长度,随机范围1-20-startIndex+111         INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len));
    12         SET i=i+1;
    13     END WHILE;
    14 
    15 END $
    16 
    17 CALL test_randstr_insert(10)$
  • 相关阅读:
    禁止页面全选复制IE,Opera,Mozilla Firefox,Google Chrome,Safari,Flock等主流浏览器测试成功
    Create virtual keyboard using C# Winform Application
    C# 获取Windows语言类型(两种方式)
    Javascript在ASP.NET中的用法:计算还剩余输入多少个字符
    IE和firefox通用的复制到剪贴板的JS函数,Opera测试不成功!
    什么是数据的表分区(文章附上Server 2005分区实施方案)
    JavaScript创建的可编辑表格
    关于ASP.NET页面打印技术的总结
    错误:该行已经属于另一个表
    安装IE7后测试IE6环境的解决办法_IE6Standalone
  • 原文地址:https://www.cnblogs.com/niujifei/p/15009563.html
Copyright © 2011-2022 走看看