Oracle数据库游标

游标是SQL的一个内存工作区,由系统或用户以变量形式定义。游标的作用是用于临时存储从数据库中提取的数据块。为什么要用游标?数

游标的概念

游标是SQL的一个内存工作区,由系统或用户以变量形式定义。

游标的作用是用于临时存储从数据库中提取的数据块。

为什么要用游标?数据库的数据是存放在磁盘中的,游标是把数据从磁盘中调到计算机内存中进行处理,最后将处理结果显示出来或者最终写回数据库,这样可以提高数据处理的效率,因为频繁的磁盘数据交换会降低效率。

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

隐式游标:对于SELECT…INTO…语句(一次只能从数据库中提取一行记录)和DML(数据操纵语言,也就是INSERT语句、UPDATE语句和DELETE语句),系统都会采用隐式游标。

显示游标:对于结果集多于1条记录的SELECT语句,需要程序员自己定义一个显示游标。

隐式游标

隐式游标的四个属性

%FOUNT值true代表单行查询语句或DML语句操作成功

%NOTFOUNT与%Found相反

%ISOPENDML执行中为true,执行结束后为false

%ROWCOUNT代表DML语句成功执行的数据行数

使用隐游标的一个例子:

显示游标

显示游标的四个属性

%FOUNT最近的FETCH语句返回一行记录则true,否则为false

%NOTFOUNT与%Found相反

%ISOPEN游标打开时为true,否则为false

%ROWCOUNT获取FETCH语句返回的行数

显示游标的使用分以下4个步骤:

声明游标

打开游标

提取数据

关闭游标

声明游标:

CURSOR 游标名[(参数1 数据类型[,参数2 数据类型…])] IS SELECT语句;

参数是可选部分

打开游标:

OPEN 游标名[(实际参数1[,实际参数2…])];

参数是可选部分,打开游标时,结果集就被送到的游标工作区

提取数据:

FETCH 游标名 INTO 变量名1[,变量名2…];

FETCH 游标名 INTO 记录变量;

游标打开后有一个指针指向数据区,FETCH语句一次返回指针所指的一行数据,要返回多行需重复执行,可以使用循环语句来实现。控制循环可以通过判断游标的属性来进行。

第一种FETCH格式:变量名是用来从游标中接收数据的变量,,需要事先定义。变量的个数和类型应与SELECT语句中的字段变量的个数和类型一致。

第二种FETCH格式:一次将一行数据提取到记录变量中,需要使用%ROWTYPE事先定义记录变量,这种形式使用起来比较方便,不必分别定义和使用多个变量。定义记录变量的方法:变量名 表名|游标名%ROWTYPE; 其中的表必须存在,游标名也必须先定义。

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1919981.html

(0)
上一篇 2025年2月22日 18:51:58
下一篇 2025年2月22日 18:52:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python链接Oracle数据库的方法

    本文实例讲述了python链接oracle数据库的方法。分享给大家供大家参考。具体如下: 这里使用python链接Oracle数据库需要引用cx_Oracle库 #coding=UTF-8 import cx_Oracle def hell…

    编程技术 2025年2月28日
    200
  • oracle数据库的存储过程是什么?

    oracle数据库的存储过程:一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。 存储过程(Stored Proce…

    2025年2月24日
    300
  • 使用Procwatcher监控Oracle数据库锁定Contention

    数据库锁定Contention是我们在实际中经常遇到的问题。严重的Contention可能会引起整体数据库性能衰减,乃至连接失败。实际生产如 数据库锁定contention是我们在实际中经常遇到的问题。严重的contention可能会引起整…

    数据库 2025年2月23日
    300
  • Oracle 函数中游标及递归的应用

    在代码中使用递归可能大部分程序员都不陌生,但是在存储过程或者函数中写个递归估计就不多见了。今天遇到了一个在Oracle函数中使 在代码中使用递归可能大部分程序员都不陌生,但是在存储过程或者函数中写个递归估计就不多见了。 今天遇到了一个在Or…

    数据库 2025年2月23日
    300
  • [小技巧]手工扩大Oracle数据库表空间的方法

    1、首先查看表空间的名字和所属文件select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom d 1、首先查看表空间的名字和所属…

    数据库 2025年2月23日
    300
  • Oracle数据库进程数与会话数的更改

    1.通过SQLPlus修改Oracle的sessions和processes的关系是:sessions=1.1*processes + 5使用sys,以sysdba权限登录:SQLgt; show 1.通过SQLPlus修改Oracle的s…

    数据库 2025年2月23日
    300
  • 循序渐进学习Oracle数据库

    从事Oracle数据库开发两年有余,也一直觉得自己是个半桶水,期间也读了一些资料、书籍,大体感觉学习Oracle数据库首先要学习Orac 从事oracle数据库开发两年有余,也一直觉得自己是个半桶水,期间也读了一些资料、书籍,大体感觉学习o…

    数据库 2025年2月23日
    600
  • 技巧分享 Oracle数据库的启动和关闭

    Oracle数据库的启动和关闭方式 一、几种启动方式: 1、startup nomount非安装启动,这种方式启动下可执行:重建控制文件、重建数 Oracle数据库的启动和关闭方式 一、几种启动方式: 1、startup nomount非安…

    数据库 2025年2月23日
    300
  • 新建Oracle数据库三种方法

    1.通过运行Oracle Database Configuration Assistant 创建、配置、或删除数据库(也可在命令行下输入dbca);2.用命令行的方式建立 1.通过运行Oracle Database Configuratio…

    数据库 2025年2月23日
    300
  • 在Oracle数据库里使用RAID

    RAID,即廉价磁盘冗余阵列,是一种将相同的数据放在多个硬盘上不同位置的方法。RAID有很多不同的类型(叫做RAIDldquo;级rd   RAID,即廉价磁盘冗余阵列,是一种将相同的数据放在多个硬盘上不同位置的方法。RAID有很多不同的类…

    数据库 2025年2月23日
    300

发表回复

登录后才能评论