repeat循环
语法
[标签:]repeat
循环体;
until 结束循环的条件 end repeat [标签];
repeat循环类似于java中的do...while循环,不管如何,循环都会先执⾏⼀次,然
后再判断结束循环的条件,不满⾜结束条件,循环体继续执⾏。这块和while不
同,while是先判断条件是否成⽴再执⾏循环体。
示例1:⽆循环控制语句
根据传⼊的参数v_count向test1表插⼊指定数量的数据。
/*删除存储过程*/
DROP PROCEDURE IF EXISTS proc6;
/*声明结束符为$*/
DELIMITER $
/*创建存储过程*/
CREATE PROCEDURE proc6(v_count int)
BEGIN
DECLARE i int DEFAULT 1;
a:REPEAT
INSERT into test1 values (i);
SET i=i+1;
UNTIL i>v_count END REPEAT;
END $/*结束符置为;*/
DELIMITER ;
见效果:
mysql> DELETE FROM test1;
Query OK, 1 row affected (0.00 sec)
mysql> CALL proc6(5);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * from test1;
+---+
| a |
+---+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+---+
5 rows in set (0.00 sec)
repeat中iterate和leave⽤法和while中类似,这块的⽰例算是给⼤家留的作业,写好
的发在留⾔区,谢谢。
loop循环
语法
[标签:]loop
循环体;
end loop [标签];
loop相当于⼀个死循环,需要在循环体中使⽤iterate或者leave来控制循环的
执⾏。示例1:⽆循环控制语句
根据传⼊的参数v_count向test1表插⼊指定数量的数据。
/*删除存储过程*/
DROP PROCEDURE IF EXISTS proc7;
/*声明结束符为$*/
DELIMITER $
/*创建存储过程*/
CREATE PROCEDURE proc7(v_count int)
BEGIN
DECLARE i int DEFAULT 0;
a:LOOP
SET i=i+1;
/*当i>v_count的时候退出循环*/
IF i>v_count THEN
LEAVE a;
END IF;
INSERT into test1 values (i);
END LOOP a;
END $
/*结束符置为;*/
DELIMITER ;
见效果:
mysql> DELETE FROM test1;
Query OK, 5 rows affected (0.00 sec)
mysql> CALL proc7(5);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * from test1;
+---+
| a |
+---+
| 1 |
| 2 |
| 3 |
| 4 || 5 |
+---+
5 rows in set (0.00 sec)
loop中iterate和leave⽤法和while中类似,这块的⽰例算是给⼤家留的作业,写好的
发在留⾔区,谢谢。
总结
1. 本⽂主要介绍了mysql中控制流语句的使⽤,请⼤家下去了多练习,熟练掌握
2. if函数常⽤在select中
3. case语句有2种写法,主要⽤在select、begin end中,select中end后⾯可以省略case,
begin end中使⽤不能省略case
4. if语句⽤在begin end中
5. 3种循环体的使⽤,while类似于java中的while循环,repeat类似于java中的do while
循环,loop类似于java中的死循环,都⽤于begin end中
6. 循环中体中的控制依靠leave和iterate,leave类似于java中的break可以退出循
环,iterate类似于java中的continue可以结束本次循环