十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
oracle 11g 直接用continue 关键字,例子:
成都创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为永善企业提供专业的网站设计、成都网站设计,永善网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
declare
cursor v_cur is(
select level as l from dual connect by level = 10);
i number;
begin
open v_cur;
loop
fetch v_cur
into i;
exit when v_cur%notfound;
if i = 5 then
continue; --跳出本次循环,光标移到一下一条记录
else
dbms_output.put_line(i);
end if;
end loop;
close v_cur;
end;
11g以下版本,可以使用 GOTO 语句或者自定义异常:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
declare
cursor v_cur is(
select level as l from dual connect by level = 10);
i number;
e exception;
begin
open v_cur;
loop
fetch v_cur
into i;
exit when v_cur%notfound;
begin
if i = 5 then
raise e; --通过抛出异常跳出本次循环
else
dbms_output.put_line(i);
end if;
exception
when e then
null;
end;
end loop;
close v_cur;
end;
1
2
3
declare
cursor v_cur is(
select level as l from dual connect by level = 10);
i number;
begin
open v_cur;
loop
flag
fetch v_cur
into i;
exit when v_cur%notfound;
if i = 5 then
goto flag; --通过goto跳出本次循环
else
dbms_output.put_line(i);
end if;
end loop;
close v_cur;
end;
第二步是打开游标,即执行FOR后面的那句select语句 ,将结果正式查询出来加载到内存中,这时游标curRESULT里就正式有数据了。
第三步是把游标结果集中当前数据记录的多个字段一个一个的赋值给几个变量,当然如果结果集和几个变量的变量个数和变量类型必须是一样的,如果不一样会出错。
第四步curRESULT%FOUND是判断curRESULT这个游标循环到当前记录是否还有记录存在。FETCH下移是移动到下一条记录,如果当前记录已经是最后一条,那他会下移到一条界外的虚拟记录,这时当你用curRESULT%FOUND去判断的时候会得到FALSE,这就是刚才为什么我们要判断curRESULT%FOUND的原因了。
游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。
游标的分类 :
显式游标和隐式游标
一般在存贮过程中使用。