对于oracle三种循环机嵌套if语句的使用
不论哪种循环都必须包含loop和end loop
当执行完成一个pl/sql语句段时,记得执行commit或者rollback语句完成事务的提交以及回滚
--sql developer的快捷代码提示为 Ctrl + alt + 空格
-- for循环
set serveroutput on;
declare
v_num number := 5;
begin
for i in 1..v_num loop
dbms_output.put_line(i);
end loop;
end;
-- loop循环
set serveroutput on;
declare
v_num number := 0;
begin
loop
-- mod为求余,+,-,*,/,对于字符串相加连接使用||
if v_num = 4 then
v_num := v_num + 1;
CONTINUE;
ELSIF mod(v_num,2) = 0 then
dbms_output.put_line('这是偶数值:'||v_num);
ELSE
dbms_output.put_line('这是基数值:'||v_num);
end if;
v_num := v_num + 1;
exit when v_num > 6;
end loop;
end;
-- while循环
set serveroutput on;
declare
v_num number := 0;
begin
while v_num < 5 loop
dbms_output.put_line(v_num);
v_num := v_num + 1;
end loop;
end;
-- 内外层的循环嵌套
begin
<<loop_outer>>
for i in 1..10 loop
-- exit可以直接退出循环类似python中break,exit .. when ..可以指定条件退出循环
exit loop_outer when i=5;
-- continue可以直接退出循环,类似python中的continue,continue .. when ..可以指定条件退出循环
-- continue loop_outer when i=5;
IF i = 5 or i=6 THEN
<<inner_loop>>
for j in 1..3 loop
-- continue也可以直接退出到外层循环
-- continue loop_outer when i=5;
dbms_output.put_line('我是内层循环'||j);
end loop inner_loop;
END IF;
dbms_output.put_line('此人未有学位');
end loop loop_outer;
end;
注意for循环的反向,可以使用 reverse