oracle中的loop使用基础和进阶方法

1.基本loop语句

  • 语法格式
loop
  /* statements */
end loop;

简单来说就是通过statement语句判断是否离开loop循环

1.使用exit…when结束loop循环

--开启输出台
set serveroutput on;
declare
    v_i number:=1;
begin
    --声明loop循环的自定义标签
    <<myloop1>>
    loop
        dbms_output.put_line('v_i='||v_i);
        v_i:=v_i+1;
        exit when v_i>10;
    end loop;
    dbms_output.put_line('loop循环结束了');
end;

2.使用if…else语句结束循环

declare
 v_i number:=0;
begin
    --声明loop循环的自定义标签
    <<myloop2>>
    loop
        if v_i<10 then
            v_i:=V_i+1;
            dbms_output.put_line('v_i='||v_i);
        else 
        
        dbms_output.put_line('loop循环结束了');
            exit myloop2;
        end if;
    end loop;
end;

2.进阶的loop语句

1.while…loop结构

  • 语法格式
[<<label_name>>]
WHILE boolean_expression
LOOP
statement...
END LOOP [label_name];
  • 代码实例
declare 
    v_i number:=0;
begin
    <<myloop3>>
    while(v_i<=10)
    loop
        dbms_output.put_line('v_i='||v_i);
        v_i:=v_i+1;
    end loop myloop3;
    dbms_output.put_line('loop循环结束了');

end;

2.for…loop结构

begin
    --注意0..10中间是两个.
    for v_i in 0..10 loop
        dbms_output.put_line('v_i='||v_i);
    end loop;
        dbms_output.put_line('loop循环结束了');
end;

3.带cursor的loop循环

  • 准备工作 创建一个dept表,随便插入几条数据
create table dept(
    deptno number(2),
    deptname varchar(20),
    deptLoc varchar(20)
)
  • a方式 我叫它不用declare方式
begin
    for mycursor in (select * from dept) loop
        dbms_output.put_line('deptno='||mycursor.deptno);
    end loop;
end;
  • b方式 我叫它用declare方式
declare
    cursor mycursor2 is select * from dept;
begin
    for m in mycursor2 loop
        dbms_output.put_line('deptno='||m.deptno);
    end loop;
end;
posted @ 2021-05-08 20:35  小吕不秃顶也能变强  阅读(239)  评论(0)    收藏  举报