#LOOP Statement

LOOP Statement为循环控制语句,其语法形式为:

loop

......

end loop [label_name];

其中,label_name为可选项,作为一个标签(Label)标识循环体,提升可读性,使用label_name需在循环体开始处有相匹配的标签定义,否则将报错。

LOOP Statement无条件进入循环语句,并在结束后再次返回到循环语句的顶部循环执行,除非存在顺序控制语句或引发异常退出循环,因此,在循环语句里必须存在GOTO StatementEXIT StatementCONTINUE Statement等顺序控制语句,否则将导致死循环。

示例

DECLARE
i INT;
BEGIN
    i := 0;
    <<loop1>>
    LOOP
        i := i + 1;
        IF i=3 THEN
            GOTO a;
        END IF;
        DBMS_OUTPUT.PUT_LINE ('This is: '||i);
    END LOOP loop1;
    <<a>>
    DBMS_OUTPUT.PUT_LINE ('The End');
END;
/
 
--result
This is: 1
This is: 2
The End
DECLARE
a INT :=1;
BEGIN
    LOOP
        DBMS_OUTPUT.PUT_LINE('loop:'||a);
        a := a+1;
        EXIT WHEN a > 2;
    END LOOP;
END;
/

--result
loop:1
loop:2
pdf-btn 下载文档
copy-btn 复制链接