首页 > 其他分享 >游标的学习和使用

游标的学习和使用

时间:2023-02-07 15:12:59浏览次数:33  
标签:语句 游标 查询 学习 数据量 使用 数据

1.游标的认识和作用

1.1 什么是游标?

  • 游标Cursor是处理数据的一种方法,用来查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行向前或向后浏览数据的能力;
  • 游标相当于一个指针,它可以指定结果中的任何位置,允许用户对指定位置的数据进行处理;
  • 游标可以被看作是一个临时文件,提供了在查询结果集中向前或向后浏览护具、处理结果集中数据的能力。

1.2 游标的作用是什么?

  • 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录进行处理的机制。
  • 用户可以访问结果集中任意一行数据,在将游标放置到某行之后可以在该行或从该位置的行块上执行操作。
  • 其实就是用于存放查询出来的多条记录的一个临时变量,我们可以从这个变量中取出我们需要的信息字段。

2.游标的优点和缺点

2.1 游标的优点

  • sql的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。
  • 游标提供了在逐行的基础上操作表中数据的方法;
  • 游标的常见用途就是保存查询结果,以便之后的使用;
  • 创建一次游标结果集而重复使用若干次,比重复查询数据库要快很多。

2.2 游标的缺点

  1. 当我们做的数据量大,而且系统上跑的不止我们一个业务时,尽量避免使用游标,游标使用时会对行加锁,可能会影响其他业务的正常进行;
  2. 当数据量大时其效率比较低效;
  3. 游标其实是相当于把磁盘整体放入了内存中,如果游标数据量大则会造成内存不足,所以在数据量小时才使用游标。
  4. 尽管游标能遍历结果中的所有行,但他一次只指向一行。

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.游标的使用有哪些?

隐式游标的使用:

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

  

显示游标的使用:

  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遍历 实例:

 

 注意:

  1. 使用for循环遍历游标的好处:1.不用声明额外的变量,2.不用打开和关闭游标,3.写法简单。
  2. 使用游标时,一定要记得关闭游标;
  3. 在定义变量时需要注意定义的类型必须要和表中的字段类型一致,否则会出错

 

标签:语句,游标,查询,学习,数据量,使用,数据
From: https://www.cnblogs.com/wanyuy/p/17098457.html

相关文章

  • UIScrollView全部API学习。
    交流群:QQ529560119>设定滚定条的样式typedefNS_ENUM(NSInteger,UIScrollViewIndicatorStyle){UIScrollViewIndicatorStyleDefault,//blackwithwhiteborder.......
  • NSSet全部API学习。
    /****************集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址,不过NSArray是有序的集合,NSSet是无序的集合,同时NSSet可以保证数据的唯一性,当插入相同的数据时......
  • UIView全部API的学习。
    交流群:QQ529560119>/*********UIView是iOS系统界面元素的基础,所有的界面元素都是集成自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是一个叫CALayer(CoreA......
  • 感知机:补充【统计学习方法】
    点到超平面距离公式的推导过程中学学过二维空间中点到直线的距离公式已知点$P(x_0,y_0)$,直线$Ax+By+C=0$,求点$P$到直线$l$的距离点$P$到直线的距离是点$P$到直线$l$的垂......
  • 10节课带你深入学习 DevOps 工程
       作者:JavinPaul10节课带你深入学习DevOps工程对那些想要涉足DevOps领域的工程师来说,这些多样的课程提供了一个很好的开始DevOps现在真的很热门,对于杰出的工程师......
  • 使用类与对象的方式实现点击按钮让标签颜色变色
    需求使用类与对象的方式实现点击按钮让标签颜色变色结构代码......
  • 开发技术(一)—— SpringBoot使用策略模式
    Spring实现策略模式策略模式简介引言:当程序中使用太多的if/else/switch来处理不同类型的业务时,会变得极难维护,通过策略模式可以更容易的实现业务扩展和维护。模式概述:......
  • 认证组件、权限组件、权限的使用、频率组件、使用步骤、过滤排序、分页
    上节课回顾#1两个视图基类 APIViewGenericAPIView:跟数据库打交道,而且需要序列化反序列化,可以使用它#25个视图扩展类+GenericAPIView=视图类 -list......
  • c++ gstreamer使用2
    1,播放教程playbin#include<gst/gst.h>#include<stdio.h>/*Structuretocontainallourinformation,sowecanpassitaround*/typedefstruct_CustomData......
  • C#使用FFmpeg录制视频
    FFmpeg通过控制台命令可以方便地录制USB摄像头和屏幕,本文使用C#中的Process类调用FFmpeg命令,并通过获取控制台输出参数实现录制视频的完整功能。Gitee完整代码:FFmpegWrapp......