Mysql:循环结构

循环结构

分类 while    loop    repeat

循环控制:

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

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

1、while

语法:

【标签】while   循环条件 do 

  循环体;

end while【标签】;

2、loop 

语法

【标签】loop

  循环体

end   loop【标签】;可以用来模拟简单的死循环

3、repeat

语法:

  【标签】repeat

    循环体

   until 结束循环的条件

  end   repeat 【标签】;

while案列:

批量插入多条数据 无循环控制语句

  CREATE PROCEDURE PRO_whiel1( IN count  INT)

    BEGIN 

      DECLARE  i  INT  DEFAULT 1;

      WHILE  i<=count  DO

        INSERT  INTO  admin(username,  password)   VALUES(CONCAT('Rose',i),  '333');

        SET  i=i+1;

     END  WHILE;

        END $

  CALL  PRO_whiel1(100)  $;

 

 

 案例:

一、已知表stringcontent 其中字段  id  自增长   content varchar(20)

向该表插入指定个数的  随机字符串  

DROP TABLE IF  EXISTS  stringcontent;

CREATE  TABLE  stringcontent(

  id  INT  PRIMARY KEY AUTO_INCREMENT,

  content VARCHAR(20)

);

DELIMITER  $

CREATE  PROCEDURE  test_randstr_insert(IN  insertCount  INT )

  BEGIN

    DECLARE  i INT DEFAULT  1;   #定义一个循环变量i,表示插入次数

    DECLARE  str  VARCHAR(26)  DEFAULT 'abcdefghijklmnopqrstuvwxyz';

    DECLARE  startIndex INT DEFAULT 1;  #代表起始索引

    DECLARE   len  INT  DEFAULT  1;#代表截取字符串的长度

    WHILE i<=insertCount  DO 

      SET  len = FLOOR(RAND()*20-startIndex +1)+1;  #产生一个随机的整数,代表 截取长度 , 范围1-(26-startIndex+1)  FLOOR 向下取整  RAND 产生[0,1)的数

      SET  startIndex  = FLOOR(RND()*26+1);  # 产生一个随机整数   代表起始索引1-26

       INSERT  INTO  stringcontent(content)  VALUES(SUBSTR(str,  startIndex,  len);

      SET i =i+1;

    END WHILE;

   END $

原文地址:https://www.cnblogs.com/GOOGnine/p/12305587.html