所有形式的 LOOP 语句,包括 FOR LOOP 、WHILE LOOP 和简单 LOOP 语句可以具有语句标签。您可以按以下步骤创建带标签的 LOOP 语句:
- 写一个有效的 LOOP 、FOR LOOP 或 WHILE LOOP 语句。
- 通过紧接在 LOOP 、FOR LOOP 或 WHILE LOOP
语句的第一行之前的尖括号(<<loop_label>>)之间包含一个 SQL 标识符(它不是同一 SPL
例程中的标签的名称)来创建语句标签。
- 输入相同的 SQL 标识符,但是不带尖括号分隔符,紧接在终止语句的 END LOOP 关键字之后,现在这是一个带标签的循环语句。
标记的 LOOP 语句的一个优点是它们可以在 EXIT 语句中引用。当执行 EXIT
label 语句时,程序控制从 EXIT
语句传递到跟在指定循环标记之后的语句。
在以下示例中,标记的 WHILE LOOP 循环(其循环标记标识符是
endo)是标记的 LOOP 语句的语句块的一部分,其循环标签标识符是
voort。如果条件
EXIT 语句
EXIT endo WHEN x = 7: 检测到的条件为真,则程序控制传递到
END LOOP
endo 内部生成之后的
LET x = x + 1 语句。如果条件语句
EXIT voort WHEN x >
9 检测到其条件为真,则程序控制传递到
END LOOP voort 语句之后的
LET x = x +
1 语句,并且 x 的值不能被 LET
语句递增。
<<voort>>
LOOP
LET x = x+1;
<<endo>>
WHILE ( i < 10 ) LOOP
LET x = x+1;
EXIT endo WHEN x = 7;
EXIT voort WHEN x > 9;
END LOOP endo;
LET x = x+1;
END LOOP voort;
使用 FOR 语句语法指定变量和变量可以采用的值的范围。循环迭代,直到达到对这些值的指定限制,或者直到控制被传递到循环之外,如以下示例中的无条件 EXIT
语句所示:
FOR i IN (1 TO 5) LOOP
IF i = 5 THEN EXIT;
ELSE
CONTINUE;
END LOOP;
在
FOR LOOP 语句中,FOR 关键字可以后跟 EXIT 或 CONTINUE 关键字,但是不需要 FOR 关键字,因为它在一个普通的 FOR 语句中。
以下示例用同等功能的条件 EXIT 语句替换 IF
语句:
FOR i IN (1 TO 5) LOOP
EXIT WHEN i = 5;
END LOOP;