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;

浙公网安备 33010602011771号