loop循环
从这个问题发现了国内的资料真是抄来抄去,网上总是那几篇,连最重要的东西都没讲到。查了stackoverflow才发现loop只能在存储过程、函数中使用:MySQL supports the IF, CASE, ITERATE, LEAVE LOOP, WHILE, and REPEAT constructs for flow control within stored programs.
一个典型的应用是这样的:
DROP PROCEDURE IF EXISTS abc;
DELIMITER //
CREATE PROCEDURE abc()
BEGIN
DECLARE a int DEFAULT 0;
lp:LOOP
set a = a+1;
select 'abcdefg';
if a>4 THEN LEAVE lp;
END if;
END LOOP;
END //
DELIMITER ;
在存储过程中声明一个局部变量a,循环体中a每次加1,当a大于4就终止循环,执行call abc()
后发现会输出5个abcdefg
。
LOOP循环语句用来重复执行某些语句,与IF和CASE语句相比,LOOP只是创建一个循环操作的过程,并不进行条件判断。跳出循环过程,使用LEAVE子句,LOOP语句的基本格式如下:
loop_name: LOOP
(循环体)
END LOOP (loop_name);
--加if
loop_name: LOOP
(循环体)
if condtion THEN LEAVE loop_name;
END LOOP (loop_name);
终止循环时的loop_name
可以省略。