LOOP 语句
LOOP语句用于多次执行一个或一组语句。
语法
描述
- label
- 指定 LOOP 语句的标签。 如果指定了结束标签,则必须指定开始标签,且两者必须匹配。
标签名称不能与使用该标签的SQL过程的名称相同。
- SQL-procedure-statement
- 指定要在循环中执行的语句。 语句必须是 SQL-procedure-statement(外部) 中列出的语句之一。
示例
该过程使用LOOP语句从员工表中获取值。 每次循环迭代时,OUT参数计数器都会递增,并检查 v_midinit的值 ,以确保该值不是单个空格(“”)。如果 v_midinit 是单个空格,则LEAVE语句将控制流传递到循环外部。
CREATE PROCEDURE LOOP_UNTIL_SPACE(OUT counter INTEGER)
LANGUAGE SQL
BEGIN
DECLARE v_counter INTEGER DEFAULT 0;
DECLARE v_firstnme VARCHAR(12);
DECLARE v_midinit CHAR(1);
DECLARE v_lastname VARCHAR(15);
DECLARE c1 CURSOR FOR
SELECT firstnme, midinit, lastname
FROM employee;
DECLARE EXIT HANDLER FOR NOT FOUND
SET counter = -1;
OPEN c1;
fetch_loop:
LOOP
FETCH c1 INTO v_firstnme, v_midinit, v_lastname;
IF v_midinit = ' ' THEN
LEAVE fetch_loop;
END IF;
SET v_counter = v_counter + 1;
END LOOP fetch_loop;
SET counter = v_counter;
CLOSE c1;
END 