程序技术好文:游标的学习和使用

简介: 程序技术好文:游标的学习和使用

1.游标的认识和作用


1.1 什么是游标?


游标Cursor是处理数据的一种方法,用来查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行向前或向后浏览数据的能力;


游标相当于一个指针,它可以指定结果中的任何位置,允许用户对指定位置的数据进行处理;


游标可以被看作是一个临时文件,提供了在查询结果集中向前或向后浏览护具、处理结果集中数据的能力。


1.2 游标的作用是什么?


游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录进行处理的机制。


用户可以访问结果集中任意一行数据,在将游标放置到某行之后可以在该行或从该位置的行块上执行操作。


其实就是用于存放查询出来的多条记录的一个临时变量,我们可以从这个变量中取出我们需要的信息字段。


2.游标的优点和缺点


2.1 游标的优点


sql的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。


游标提供了在逐行的基础上操作表中数据的方法;


游标的常见用途就是保存查询结果,以便之后的使用;


创建一次游标结果集而重复使用若干次,比重复查询数据库要快很多。


2.2 游标的缺点


当我们做的数据量大,而且系统上跑的不止我们一个业务时,尽量避免使用游标,游标使用时会对行加锁,可能会影响其他业务的正常进行;


当数据量大时其效率比较低效;


游标其实是相当于把磁盘整体放入了内存中,如果游标数据量大则会造成内存不足,所以在数据量小时才使用游标。


尽管游标能遍历结果中的所有行,但他一次只指向一行。


3.游标的细节认识


3.1 游标的分类


  游标有两种类型:隐式游标和显示游标


  单行使用隐式游标:我们使用到的SELECT .... INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标


  多行使用显示游标:如果提取多行数据,需要程序员定义一个显示游标,并通过与游标有关的语句进行处理。显示游标对应一个返回结果为多行多列的select语句。显示游标的定义如下图:


3.2 游标的四种属性


  1.SQL%ROWCOUNT:返回值位一个整形数字,代表DML语句成功执行的数据行数


  2.SQL%FOUND:布尔型值为TRUE代表插入、删除、更新或单行查询操作成功


  3.SQL%NOTFOUND:布尔型值为true表示插入、删除、更新或单行查询操作失败


  4.SQL%ISOPEN:布尔型DML执行过程中为真,结束后为假


4.游标的使用有哪些//代码效果参考:http://www.lyjsj.net.cn/wz/art_24083.html


隐式游标的使用:


  使用它们进行一些流程控制,如下:


显示游标的使用:


  curse curson_name【参数1 参数类型,参数2 参数类型】 is select 语句;


游标的使用步骤:


1. 定义游标:declare cursor 游标名称 for select查询语句 【for {readonly|update}】


2. 打开游标:open cursor


3. 从游标中操作数据:fetch... ... current of cursor


4. 关闭游标:close cursor


游标的遍历:两种方式


1.loop.....end loop;


实例:


2.使用for遍历


实例:


注意:


使用for循环遍历游标的好处:1.不用声明额外的变量,2.不用打开和关闭游标,3.写法简单。


使用游标时,一定要记得关闭游标;


在定义变量时需要注意定义的类型必须要和表中的字段类型一致,否则会出错

相关文章
|
6月前
|
JavaScript 前端开发 安全
JDK1.8 新特性详解及具体使用方法
本文详细介绍了JDK 1.8的新特性及其组件封装方法,涵盖Lambda表达式、Stream API、接口默认与静态方法、Optional类、日期时间API、方法引用、Nashorn JavaScript引擎及类型注解等内容。通过具体代码示例,展示了如何利用这些特性简化代码、提高开发效率。例如,Lambda表达式可替代匿名内部类,Stream API支持集合的函数式操作,Optional类避免空指针异常,新日期时间API提供更强大的时间处理能力。合理运用这些特性,能够显著提升Java代码的简洁性、可读性和可维护性。
724 50
|
存储 Kubernetes 负载均衡
Kubernetes设计架构
Kubernetes 是一个开源的容器编排平台,用于自动化应用的部署、扩展和管理。其设计架构高度可扩展且灵活,能管理大规模分布式系统。核心组件包括集群(含主节点和工作节点)、API 服务器、etcd、控制器管理器、调度器、Pod、服务、命名空间、配置管理、持久化存储、网络模型及扩展性支持。这些组件共同实现了应用的高效运行与管理。
321 7
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
288 0
Mybatis入门(select标签)
|
SQL 数据处理 数据库
|
存储 分布式计算 算法
【底层服务/编程功底系列】「大数据算法体系」带你深入分析MapReduce算法 — Shuffle的执行过程
【底层服务/编程功底系列】「大数据算法体系」带你深入分析MapReduce算法 — Shuffle的执行过程
531 0
|
10月前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
监控 数据可视化 关系型数据库
开发者如何使用云数据库 SelectDB 版
【10月更文挑战第20天】开发者如何使用云数据库 SelectDB 版
264 0
|
开发工具 git
解决Git push提交时Permission denied(publickey).Could not read from remote...的问题
解决Git push提交时Permission denied(publickey).Could not read from remote...的问题
939 0
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的税务管理与优化
【7月更文挑战第25天】 ERP系统中的税务管理与优化
1032 2
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
942 0