GBase 8s SQL 指南:语法 南大通用数据技术股份有限公司 1203 用法 EXIT 语句从迭代传输执行的控制,使封闭语句类型(FOR 、FOREACH 、 LOOP 或 WHILE)的最内层循环终止。如果未指定循环标签或 WHEN 添加, 则在当前 FOR 、FOREACH 、LOOP 或 WHILE 语句之后的第一个语句处恢复 执行。 从 FOREACH 语句 EXIT 如果 EXIT 语句将 FOREACH 语句作为其最内层的结束语句,则 FOREACH 关 键字必须跟在 EXIT 关键字之后。如果 FOREACH 语句没有以 EXIT FOREACH 语句结束,则 EXIT FOREACH 语句会无条件地终止 FOREACH 语句。 以下程序段包含 EXIT FOREACH 语句: FOREACH cursor1 FOR SELECT * INTO a FROM TABLE(b); IF a = 4 THEN DELETE FROM TABLE(b) WHERE CURRENT OF cursor1;4 EXIT FOREACH; END IF; END FOREACH; 从 FOR 、LOOP 或 WHILE 循环 EXIT 如果 EXIT 语句在 FOREACH 语句外发出,则它返回一个错误,除非它是从作 为其最内层的 FOR 、FOR LOOP 、LOOP 、WHILE LOOP 或 WHILE 语句发 出。在不包含 LOOP 关键字的 FOR 或 WHILE 语句中,EXIT 关键字之后需要 相应的 FOR 或 WHILE 关键字。执行从发出 EXIT 语句的最内层循环之后的第 一个可执行语句处恢复。 当 EXIT 语句从 FOR LOOP 、LOOP 或 WHILE LOOP 语句发出时,不需要其 它关键字,带有或不带有循环标签,但如果 EXIT 关键字之后包含 FOR 、 LOOP 或 WHILE 关键字,则该关键字必须对应于从其发出 EXIT 语句的循环的 类型。 如果 EXIT 关键字后面跟着循环标签的标识符,并且没有指定 condition,那么在 指定了标签的 FOR 、FOR LOOP 、LOOP 、WHILE LOOP 或 WHILE 语句之
GBase 8s SQL 指南:语法 南大通用数据技术股份有限公司 1204 后的第一个可执行语句将继续执行,这使得 EXIT 语句能够从嵌套循环中退出 (如果标记了外层循环)。 如果 WHEN condition 后跟着 EXIT 或 EXIT label 规范,则 EXIT 不会生效直 到 condition 为真。如果条件为真,则如果没有指定标签,则在已标记循环之后 或最内循环之后继续执行。 如果数据库服务器没有找到指定循环或循环标签,则 EXIT 语句失败。如果从 FOR 、FOREACH 、LOOP 或 WHILE 语句外发出 EXIT ,它将产生错误。 以下示例使用 EXIT FOR 语句。在 FOR 循环中,当 j 变为 6 时, WHILE 循环 中的 IF 条件 i = 5 为真。FOR 循环停止执行,SPL 过程继续 FOR 循环之外的 下一个语句(在这种情况下,是 END PROCEDURE 语句)。在该示例中,当 j 等 于 6 时,该过程结束: CREATE PROCEDURE ex_cont_ex() DEFINE i,s,j, INT; FOR j = 1 TO 20 IF j > 10 THEN CONTINUE FOR; END IF LET i,s = j,0; WHILE i > 0 LET i = i -1; IF i = 5 THEN EXIT FOR; END IF END WHILE END FOR END PROCEDURE; 以下程序片段显示了在标记的 WHILE LOOP 语句中的两个条件 EXIT 语句,它 们嵌套在另一个标记为 LOOP 的语句中: <> LOOP LET x = x+1; <> WHILE ( i >10 ) LOOP LET x = x+1;
GBase 8s SQL 指南:语法 南大通用数据技术股份有限公司 1205 EXIT inner WHEN x = 2; EXIT outer WHEN x > 3; END LOOP inner; LET x = x+1; END LOOP outer; 当 x=2 条件为真时,EXIT inner 语句将控制传递给 inner 标签的循环后的 LET 语句。当 x>3 条件为真时,EXIT outer 语句终止 outer 循环的执行。 相关语句 << Label >> 语句 、FOR 、FOREACH 、LOOP 、WHILE