Oracle中的游标
Oracle游标
概念:内存中的一块区域,存放select结果
游标用来处理从数据库中检索的多行记录(使用SELECT语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集。
一、显示游标(处理返回多行数据的SELECT 语句)
- 声明游标;CURSOR cursor_name IS select_statement
- 为查询打开游标;OPEN cursor_name
- 取得结果放入PL/SQL变量中;
FETCH cursor_name INTO list_of_variables;
FETCH cursor_name INTO PL/SQL_record;
- 关闭游标CLOSE cursor_name
二、隐式游标(所有的隐式游标都被假设为只返回一条记录。)
使用隐式游标时,用户无需进行声明、打开及关闭。PL/SQL隐含地打开、处理,然后关掉游标。
SELECT studentNo,studentName
INTO curStudentNo,curStudentName
FROM StudentRecord
WHERE name=’gg’;
上述游标自动打开,并把相关值赋给对应变量,然后关闭。执行完后,PL/SQL变量curStudentNo,curStudentName中已经有了值
特点:
- 隐式游标是单条sql语句所产生的结果集合
- 多条sql语句,隐式游标指向最后一条sql语句的结果
- 主要用在update和delete上
三、实际操作游标
1、for循环游标
(1)定义游标
(2)定义游标变量
(3)使用for循环来使用这个游标
四、游标的四个属性
- %notfound fetch是否提到数据 没有true 提到false
- %found fetch是否提到数据 有true 没提到false
- %rowcount 已经取出的记录的条数
- %isopen 布尔值 游标是否打开
小细节:
1、区别
%TYPE 声明一个列类型
%ROWTYPE 声明一个行类型
好处:更改了列、行的长度或者数据类型,会自动进行调整
2、游标和游标变量区别
oracle游标只是数据库中一个命名的工作区,当游标声明后,就与一个固定的sql关联
游标变量可以与不同的SQL语句关联,在运行时取不同的sql语句,指向不同的工作区
3、oracle中的弱游标有返回值,而且必须是%rowtype类型,而强游标无返回值
4、exit when语句一定要紧跟在fetch之后。必避免多余的数据处理
五、实际代码
简单的游标查询
--声明游标并且赋值(通过sql语句)
declare
cursor retail is select * from retailretnotice;
--声明游标变量
sheet_cur retailretnotice%rowtype;
--开始for循环
begin
--开始循环
open retail;
--开启游标
loop
--开启循环
exit when retail%notfound;
--当游标没有提到数据,退出
fetch retail into sheet_cur;
--循环游标(使用fetch游标,必须明确的打开和关闭)
dbms_output.put_line(sheet_cur.sheetid);
--输出数据
end loop;
--结束循环
--关闭游标
close retail;
end;
在Oracle中,有更简洁的方法
begin
for R in (select * from retailretnotice)
loop
dbms_output.put_line(R.sheetid);
end loop;
end;
for循环游标
1、声明游标(并且赋值)
2、声明游标变量
3、进行for循环输出
Oracle中的游标的更多相关文章
- oracle 中的游标
oracle 中的游标 通俗易懂的sql代码直接上! --简单的游标使用滴呀 --使用FOR OBJ IN OBJS LOOP ......END LOOP; DECLARE CURSOR C_JOB ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR( ...
- Oracle中的游标(转)
Oracle中的游标有两种:显式游标.隐式游标.显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理,而隐式游标是在执行插入 (insert).删除 ...
- java实现调用ORACLE中的游标和包
今天把oracle中的包和游标学习了下,不废话,网上的的有些代码是错误的,抄来抄去,就自己实践了下,做个记录.直接上图,上代码 通过plsql创建自己的的包,包分为包头和包体. 1.包头如下: CRE ...
- Oracle 中的游标(用Javase中Iterator 类比之)
当使用 pl/sql 查询 Oracle 数据库时,有时我们想输出多条记录的数据.:select * from scott.emp; 这时,我们一定会想利用循环来输出.但是,在pl/sql 中是没有数 ...
- Oracle中的游标的原理和使用详解
游标的简介 逐行处理查询结果,以编程的方式访问数据. 游标的类型: 1,隐式游标:在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql. 2,显式游标:显式游标用于处理 ...
- 【转】oracle中的游标的原理和使用详解
游标 游标的简介: 逐行处理查询结果,以编程的方式访问数据 游标的类型: 1,隐式游标:在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql. 2,显式游标:显式游标用 ...
- ORACLE中的游标Cursor总结
游标(Cursor):用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作. 游标可分为: 1. 静态游标:分为显式(explicit)游标和 ...
随机推荐
- BZOJ1078: [SCOI2008]斜堆
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1078 每一次进入的点一定是一个极左节点,然后将它所处在的整棵树左右翻转.加上一些情况的处理. ...
- JSON对象添加删除属性
假如目前我们有如下一个Json对象 var jsonObj={ 'param1':22, 'param2' :33 }; 增加属性: 我们现在向该对象jsonObj中添加一个新的属性字段:param3 ...
- 从parcel.js打包出错,到拥抱nvm
去年年底发布的parcel.js在年底可谓是火了一把,短短一个多月的时间在GitHub热门排行榜上名列前茅.因其几乎零配置的易用性,相比Webpack的复杂配置收获了大量关注及好评,甚至有人预言未来大 ...
- 使用Android Studio过程中,停留在“Building ‘工程名’ Gradle project info”的解决方法
http://www.loverobots.cn/in-the-process-of-using-studio-android-the-solution-of-the-project-info-gra ...
- js实现深拷贝和浅拷贝
浅拷贝: 思路----------把父对象的属性,全部拷贝给子对象,实现继承. 问题---------如果父对象的属性等于数组或另一个对象,那么实际上,子对象获得的只是一个内存地址,不会开辟新栈,不是 ...
- 【Zigbee技术入门教程-号外】基于Z-Stack协议栈的抢答系统
[Zigbee技术入门教程-号外]基于Z-Stack协议栈的抢答系统 广东职业技术学院 欧浩源 一.引言 2017年全国职业院校技能大赛"物联网技术应用"赛项中任务三题2的 ...
- 无序列表li横向排列的间隙问题
今天在写页面的时候,无意中遇到这样一个问题,就是无序列表li横向排列即做成导航栏时,列表项间有间隙. 如: 将列表项li变成列表块后(即将li标签设置为,display:inline-block后), ...
- Sqoop导入导出的几个例子
Sqoop导入导出的几个例子 http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive no ...
- Asp.net mvc 中Action 方法的执行(三)
[toc] 前面介绍了 Action 方法执行过程中的一些主要的组件以及方法执行过程中需要的参数的源数据的提供以及参数的绑定,那些都可以看作是 Action 方法执行前的一些必要的准备工作,接下来便将 ...
- SpringMVC运行原理
一.SpringMVC运行原理图 二.相关接口解释 DispatcherServlet接口: Spring提供的前端控制器,所有的请求都有经过它来统一分发.在DispatcherServlet将请 ...