LOOP 语句

LOOP语句用于多次执行一个或一组语句。

语法

阅读语法图跳过可视化语法图label:1LOOPSQL-procedure-statement; END LOOP标签
注意:
  • 1 只有一个标签 :每个 SQL程序语句只能指定一个标签。

描述

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