循环while:
delimiter // #定义标识符为双斜杠 drop procedure if exists test; #如果存在test存储过程则删除 create procedure test() #创建无参存储过程,名称为test begin declare i int; #申明变量 set i = 0; #变量赋值 while i < 10 do #结束循环的条件: 当i大于10时跳出while循环 insert into test values (i); #往test表添加数据 set i = i + 1; #循环一次,i加一 end while; #结束while循环 select * from test; #查看test表数据 end // #结束定义语句 call test(); #调用存储过程 ———————————————— 版权声明:本文为优快云博主「yangzjchn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/yangzjchn/article/details/82705565 |
循环repeat:repeat...until....
delimiter // #定义标识符为双斜杠 drop procedure if exists test; #如果存在test存储过程则删除 create procedure test() #创建无参存储过程,名称为test begin declare i int; #申明变量 set i = 0; #变量赋值 repeat insert into test values (i); #往test表添加数据 set i = i + 1; #循环一次,i加一 until i > 10 end repeat; #结束循环的条件: 当i大于10时跳出repeat循环 select * from test; #查看test表数据 end // #结束定义语句 call test(); #调用存储过程 ———————————————— 版权声明:本文为优快云博主「yangzjchn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/yangzjchn/article/details/82705565 |
循环loop:lpname:loop.....if..leave lpname.....end if ..end loop
delimiter // #定义标识符为双斜杠 drop procedure if exists test; #如果存在test存储过程则删除 create procedure test() #创建无参存储过程,名称为test begin declare i int; #申明变量 set i = 0; #变量赋值 lp : loop #lp为循环体名,可随意 loop为关键字 insert into test values (i); #往test表添加数据 set i = i + 1; #循环一次,i加一 if i > 10 then #结束循环的条件: 当i大于10时跳出loop循环 leave lp; end if; end loop; select * from test; #查看test表数据 end // #结束定义语句 call test(); #调用存储过程 ———————————————— 版权声明:本文为优快云博主「yangzjchn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/yangzjchn/article/details/82705565 |
游标遍历循环
CREATE PROCEDURE `test`.`new_procedure` () BEGIN -- 需要定义接收游标数据的变量 DECLARE a CHAR(16); -- 定义游标遍历SELECT i FROM test.t的值 DECLARE cur CURSOR FOR SELECT i FROM test.t; -- 遍历数据结束标志:默认值为FALSE DECLARE done INT DEFAULT FALSE; -- 将结束标志绑定到游标:找不到下一个值,设为TRUE --DECLARE CONTINUE HANDLER FOR NOT FOUND 设置错误处理方法 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur; -- 开始循环 read_loop: LOOP -- 提取游标里的数据,这里只有一个,多个的话也一样; FETCH cur INTO a; -- 声明结束的时候 IF done THEN LEAVE read_loop; END IF; -- 这里做你想做的循环的事件 INSERT INTO test.t VALUES (a); END LOOP; -- 关闭游标 CLOSE cur; END |