循环语句在Oracle中有三种,不常见的是loop,至于for,while循环太过基础,不予解释
loop(可以为循环设置标签)
注意:
1.goto label_name,设置标签的语法如下:
<<label_name>>
可以为循环设置标签
2. <<label_name>> 后面不能直接跟EXCEPTION这种关键字类的语句,要用NULL把标签跟关键字隔开。类似的关键字还有END LOOP之类的,等等。
实例代码:
CREATE OR REPLACE PROCEDURE dd IS
i PLS_INTEGER;
BEGIN
i := 0;
LOOP
<<top>> //此处为循环设置标签
i := i + 1;
IF i > 10 THEN
EXIT;
END IF;
IF i > 5 THEN
GOTO top;
END IF;
dbms_output.put_line(i);
END LOOP;
END;
loop循环:
<1>while loop循环
declare
v_rlt number(8) := -3;
begin
<<fst_loop>>
while(v_rlt < 40 )
loop
dbms_output.put_line('v_rlt = '||v_rlt);
v_rlt := v_rlt + 1;
end loop fst_loop;
dbms_output.put_line('当前循环已接结束!');
end;
<2>for in loop循环
begin
for v_rlt in -3..3 loop
dbms_output.put_line('v_rlt =' || v_rlt) ;
end loop;
dbms_output.put_line('当前循环已结束!');
end;
<3>纯loop循环
declare
v_rlt number(8) := -3;
begin
<<fst_loop>>
loop
dbms_output.put_line('v_rlt =' || v_rlt);
v_rlt := v_rlt + 1;
exit fst_loop when v_rlt > 3;
end loop;
dbms_output.put_line('当前循环已经结束!');
end;
while循环(太基础)
for循环(太基础)
值得注意的是这些循环可以嵌套使用