游标的小知识(借鉴and整理)
一、游标(用来存储多条查询数据的一种数据结构(结果集),它有一个指针,用来从上往下移动,从而达到遍历每条记录的作用)
游标也可以理解为逐行返回SQL语句的结果集
如何编写一个游标?
1、声明游标
declare cursor cur_name
is + 想要进行的操作;
定义数据的方式type/rowtype;
2、打开游标
open cur_name;
3、提取数据
fetch
4、关闭游标
eg:提取t_emp中的数据
declaer cursor cur
is select * from t_emp;
r_emp t_emp%rowtype;
begin
open cur;
fetch cur into r_emp;
dbms_output.put_line('id:'||r_emp.id);
close;
end;
5.释放游标
Deallocate cur_name
如何判断是否到了结果集的尾部,
oracle中,对于游标的属性,它通过属性值来判断的
1)%notfound 到了游标尾部,没有记录了,就返回true
2)%found 用于检验游标是否成功,通常在fetch语句前使用,当游标按照条件查询一条记录是,返回true
3)%isopen 判断游标是否打开
4)rowcount 获得影响的行数
二、游标的分类:
1、静态游标 在执行前,明确知道sql语句游标
a) 显示游标
用户自己写的sql语句,编译时能明确知道sql语句
b) 隐式游标
Dml(增、删、改、查询单条记录)会用隐式游标,该变量名不需要用户自己声明,
它由系统帮我们定义,叫sql。
影视游标的使用:通过%rowcour判断是有使用了。 使用时不要字机定义应是游标,它由系统定义
2、动态游标 在执行前不知道sql语句游标,执行时才知道sql语句的游标。
a) 强类型游标
b) 弱类型游标
三、游标的作用:(拿出结果集中的一行)
游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,
将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。
尽管游标能遍历结果中的所有行,但他一次只指向一行。 概括来讲,SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。
游标提供了在逐行的基础上操作表中数据的方法。 游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,
那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。
四,对于游标的的优化建议
- 如果能不用游标,尽量不要使用游标
- 用完用完之后一定要关闭和释放
- 尽量不要在大量数据上定义游标
- 尽量不要使用游标上更新数据
- 尽量不要使用insensitive, static和keyset这些参数定义游标
- 如果可以,尽量使用FAST_FORWARD关键字定义游标
- 如果只对数据进行读取,当读取时只用到FETCH NEXT选项,则最好使用FORWARD_ONLY参数
游标的小知识(借鉴and整理)的更多相关文章
- 游标的小知识(转载and整理)
一.游标(用来存储多条查询数据的一种数据结构(结果集),它有一个指针,用来从上往下移动,从而达到遍历每条记录的作用) 游标也可以理解为逐行返回SQL语句的结果集 如何编写一个游标? 1.声明游标 de ...
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Webx小应用的实现整理与分析
Webx小应用的实现整理与分析 初次在园子里与大家分享自己的所学,欢迎各种指点~ By 仰城 2013-08-07 学习一段时间webx.ibatis.spring以及maven的基本知识之后,应用它 ...
- 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...
- 【C#小知识】C#中一些易混淆概念总结(六)---------解析里氏替换原则,虚方法 分类: C# 2014-02-08 01:53 1826人阅读 评论(0) 收藏
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...
- 【前端词典】几个有益的 CSS 小知识
今天偷个懒,不长篇大论,分享几个你可能不知道的 CSS 小知识. 样式的顺序 CSS 代码: HTML 代码: 记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) ...
- python小技巧 小知识
python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...
- 几个有益的 CSS 小知识
样式的顺序 CSS 代码: HTML 代码: 记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) 答案你们应该是知道的. 可以这样提升 CSS 性能 后代选择器 ...
随机推荐
- 浅谈SQL优化入门:3、利用索引
0.写在前面的话 关于索引的内容本来是想写的,大概收集了下资料,发现并没有想象中的简单,又不想总结了,纠结了一下,决定就大概写点浅显的,好吧,就是懒,先挖个浅坑,以后再挖深一点.最基本的使用很简单,直 ...
- 源码跟读,Spring是如何解析和加载xml中配置的beans
Spring版本基于: 跟踪代码源码基于: https://github.com/deng-cc/KeepLearning commit id:c009ce47bd19e1faf9e07f12086c ...
- 接口测试入门(2)--get和post初级请求/使用httpclient做一个获取信息list的请求(需要登录才可以)
抛去测试自动化的架构来,直接写单个测试用例的思路如下: 1.获取测试case的接口,对每一个接口的请求方式(get/post/delete/put)进行分析,是否需要参数(不同的用例设置不同的参数,如 ...
- composer设置忽略版本匹配
composer install 时遇到错误: Your requirements could not be resolved to an installable set of packages. 原 ...
- 3.bootstrap-组件
1.图标 <button type="button" class="btn btn-default"> <span class="g ...
- C++运算符优先级 案例1
问: ... short nReaderCount=10 ++pLock->nReaderCount==? ...++和->同为1级优先级,我想很多也有很多新手弄 ...
- TOP命令详解(负载情况)
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- 深度学习框架caffe在macOS Heigh Sierra上安装过程实录
第一步.安装依赖库 brew install -vd snappy leveldb gflags glog szip lmdb brew tap homebrew/science brew insta ...
- java数据库编程之初始Mysql
2.3:命令行连接mySql 2.3.1:检查是否启动服务 步骤:计算机-----管理------服务和应用程序-------服务---搜索mysql右键启动服务 2.3.2:命令行方式连接数据库 步 ...
- ios实现无限后台任务
需求 我们的app是使用心跳机制来保持用户的登陆状态,这样才能收到服务器发来的消息和命令,但是当app进入后台以后大约3分钟或者10分钟之后app就会被系统挂起,用户就会超时下线,这样就必须保持app ...