mysql> CREATE PROCEDURE P20() -> BEGIN -> DECLARE v INT; -> SET v=0; -> loop_label: LOOP -> IF v=3 THEN -> SET v=v+1; -> ITERATE loop_label; -> END IF; -> INSERT INTO t VALUES(v); -> SET v = v+1; -> IF v>=5 THEN -> LEAVE loop_label; -> END IF; -> END LOOP; -> END;//
mysql> select * from t;
+------+
| s1 |
+------+
| 0 |
| 1 |
| 2 |
| 4 |
+------+
4 rows in set (0.00 sec) 在我脑子里是这样运行的 当if v=3 初始是0 不等于3 直接跳出if 执行 insert into 添加一条数据为0第二次执行 v=1 了 也不等于三 继续执行 insert 添加条数据为1 第三次执行 v=2 还是跳出if 执行insert 添加条数据为2第四执行 v=3 进入if语句体 v=3+1 等于4了 然后insert 一条数据为4 set v =4+1 if 5>=5 跳出循环!!!
我的问题是 ITERATE loop_label; 这条语句 不知道干什么用!!! 以上是我自己的分析 不知道对不对,请前辈们指点
mysql> select * from t;
+------+
| s1 |
+------+
| 0 |
| 1 |
| 2 |
| 4 |
+------+
4 rows in set (0.00 sec) 在我脑子里是这样运行的 当if v=3 初始是0 不等于3 直接跳出if 执行 insert into 添加一条数据为0第二次执行 v=1 了 也不等于三 继续执行 insert 添加条数据为1 第三次执行 v=2 还是跳出if 执行insert 添加条数据为2第四执行 v=3 进入if语句体 v=3+1 等于4了 然后insert 一条数据为4 set v =4+1 if 5>=5 跳出循环!!!
我的问题是 ITERATE loop_label; 这条语句 不知道干什么用!!! 以上是我自己的分析 不知道对不对,请前辈们指点
解决方案 »
- 为什么我写的这个函数看不到源代码
- 关于使用外键关联表的删除,更新问题
- mysql安装使用求助
- 【求助】myisam类型的数据库如何添加数据表
- mySQL Query Browser 显示和输入中文都不正常???????
- mysql怎么根据数组内数据删除指点的多个记录
- 不能建表 怎么回事
- 这个sql怎么写
- 求救 急!!!!2周没有搞明白,在线等。
- 这个是什么错误呢,设置外键时显示ERROR 1022: Can't write; duplicate key in table '#sql-434_2'
- [Err] 1064 - You have an error in your SQL syntax
- mysql 数据同步
BEGIN
DECLARE v INT;
SET v=0; loop_label: LOOP
IF v=3 THEN
SET v=v+1;
ITERATE loop_label; // 再次执行本次LOOP, 等同于 goto loop_label
END IF;
INSERT INTO t VALUES(v);
SET v = v+1;
IF v>=5 THEN
LEAVE loop_label;
END IF;
END LOOP;
END;//
V>=5时跳出
类似于你java 中的 continue;
BEGIN
DECLARE v INT;
SET v=0; loop_label: LOOP
IF v=3 THEN
SET v=v+1;
ITERATE loop_label; // goto loop_label 执行 IF v=3 THEN
END IF;
INSERT INTO t VALUES(v);
SET v = v+1;
IF v>=5 THEN
LEAVE loop_label; 跳出LOOP
END IF;
END LOOP;
END;//