欢迎来到天天文库
浏览记录
ID:14376404
大小:44.00 KB
页数:6页
时间:2018-07-28
《理解游标(2)游标的属性介绍及不同游标类别的案例演示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、理解游标(2)游标的属性介绍及不同游标类别的案例演示 相关链接:理解游标(1):游标的概述 PL/SQL提供了六种游标属性:游标属性名字说明举例%FOUND如果成功取到记录就返回true;否则,返回falsebegin updatetsetname='f'whereid=2;ifSQL%FOUNDthen dbms_output.put_line('cursorattribute'www.lunwen360.net);endif;end;%NOTFOUND如果没有成功取到记录就返回true;否则,返回fa
2、lse%FOUND和%NOTFOUND是相反属性,到底什么时候使用%FOUND什么时候又该用%NOTFOUND呢?要看使用哪一个属性表达得最自然,比如: www.2cto.com exitwhennotsql%foundexitwhensql%notfound显然,后者更自然%ROWCOUNT返回到目前为止,已经从游标中取出的记录数量begin updatetsetname='f'whereid=2; dbms_output.put_line('rowsselected:'
3、
4、sql%rowcount);e
5、nd;rowsselected:1%ISOPEN如果游标是打开的就返回true;否则,返回false通常用在确保当发生异常情况后游标不会一直打开着而不关闭exception whenothersthen ifcursor_name%ISOPENthen closecursor_name; endif;%BULK_ROWCOUNT返回forall语句修改的记录数量%BULK_EXCEPTIONS返回forall语句修改记录时出现的异常信息 我们可以在pl/sql中使用这些游标属性,但不能再sql语句中
6、使用 要使用一个游标属性,只需要在游标名字或游标变量后面加上%就可以,比如:cursor_name%attribute_name 对于一个隐式游标,游标的名字固定就是“SQL”,比如SQL%FOUND 下面以t表为例,对各种游标类别作简单使用介绍[sql] SQL>rollback; Rollbackcomplete SQL>select*fromt; IDNAME ------------------------------ 1a 2b
7、3c 4d 5e ①隐式游标实例:[sql] begin --执行DML操作 updatetsetname='ff'whereid=5; --判断是否有受影响行 ifsql%foundthen --打印受影响行数 dbms_output.put_line('影响行数:'
8、
9、sql%rowcount); endif; --判断是否没有受影响行 ifsql%notfoundthen dbms_output.put_line('id为5的记录不存在'); e
10、ndif; end; ②无参显式游标实例:[sql] declare --声明游标表变量并关联sql cursorrowListis select*fromt; --声明行变量 --如果上面的查询语句只有一个查询字段,这里也可以使用正常的变量声明方式(v_rowValuevarchar2(20);)。 rowValuet%rowtype; begin openrowList;--打开游标 --如果确定游标中只有一条记录的话,loop和endloop可以不写,而exit必须存在于游
11、标循环内,所以也不需要写。 loop fetchrowList intorowValue;--取出游标内的值放到rowValue中 exitwhenrowList%notfound;--判断是否还存在记录,如果不存在终止游标 dbms_output.put_line(rowValue.name);--将取到的值打印,如果查询只有一个字段这里只需写变量名即可。 endloop; closerowList;--关闭游标 end; ③有参显式游标实例:[sql] declare
12、--声明带参数的游标变量并关联sql,并将参数与sql进行关联 cursorrowList(c_namevarchar2,c_idnumber)is select*fromtwheret.name=c_nameandt.id=c_id; --声明行变量 --如果上面的查询语句只有一个查询字段,这里也可以使用正常的变量声明方式(v_rowValuevarchar2(20);)。 rowVa
此文档下载收益归作者所有