专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > DBA实战 > DBA课程 > DBA基础课程:Oracle PL/SQL显示游标、隐式游标、游标循环

DBA基础课程:Oracle PL/SQL显示游标、隐式游标、游标循环

文章来源: 更新时间:2016/6/24 10:43:47

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

DBA基础课程:Oracle PL/SQL显示游标、隐式游标、游标循环

显示游标

使用游标顺序

1.声明游标

2.打开游标

3.读取游标

4.数据是否为空,是关闭游标,否继续读取

1.声明游标

cursor cur_name[(input_parameter1,input_parameter2...)]

[return ret_type]

is select_sentence;

input_parameter:para_name [in] datatype [{:= default|para_value}]

例子

cursor cur_orderinfo(ordercode in varchar2 := '0000000')

is select * from orderinfo where ordercode= ordercode;

这里的参数不可以指定长度,否则会报错

2.打开游标

open cur_name[(para_value[,para_value2]...)];

para_value:指定输入参数的值

open cur_orderinfo('11111111');

param_value是可选参数,如果未指定则用声明使用的默认值,如果指定了则用这里指定的值

3.读取游标

fetch cur_name into {variable};

例子:

var_orderinfo orderinfo%rowtype;

fetch cur_order into var_orderinfo;

如果有值的话,可以用var_orderinfo.orderid读取数据

4.关闭游标

close cur_name;

例子:

close cur_orderinfo;

游标的属性

1.%found 布尔型属性 ,如果SQL语句至少影响到一行数据,则该属性返回御前,否则返回false

2.%notfound 与%found属性相反

3.%rowcount 数字型属性,返回受SQL语句影响的行数

4.%isopen 布尔型属性,游标打开返回true,关闭返回false

例子:

set serveroutput on

declare

cursor cur_orderinfo (username in varchar2)

is select * from orderinfo where username= username;

var_orderinfo orderinfo%rowtype;

begin

open cur_orderinfo('abcd');

fetch cur_orderinfo into var_orderinfo;

while cur_orderinfo%found loop

dbms_output.put_line('订单编号:' || var_orderinfo.ordercode);

fetch cur_orderinfo into var_orderinfo;

end loop;

close cur_orderinfo;

exception

when others then

dbms_output.put_line('错误');

end;

隐式游标

在执行一个SQL语句时,Oracle会自动创建一个隐式游标。这个游标是内存中处理该语句的工作区域,隐式游标主要是处理数据操纵语句(如update,

delete语句)的执行结果,当然特殊情况下,也可以处理select语句的查询结果。由于隐式游标也有属性,当使用隐式游标属性时,需要在属性前面加上隐式

游标的默认名称--SQL。在实际编程中,经常使用隐式游标来判断更新数据行或删除数据行的情况。

set serveroutput on

begin

update orderinfo set mobilephone = '1111111111' where username = 'abcd';

if sql%notfound then

dbms_output.put_line('此用户不需要更新手机号码');

else

dbms_output.put_line('更新手机成功');

end if;

end;

通过for语句循环游标

1.for语句循环隐式游标

begin

for var_orderinfo in (select * from orderinfo)

loop

sql_sentences;

end loop;

end;

2.for语句循环显示游标

declare

cursor cur_orderinfo is select * from orderinfo;

begin

for var_orderinfo in cur_orderinfo

loop

sql_sentences;

end loop;

end;

for语句循环游标时,可以声明游标,但不用打开,读取,关闭游标。

本文地址:http://www.cuug.com.cn/dba/kecheng/12298591091.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1