显示游标的创建与使用

目录

声明游标

打开游标

读取游标

关闭游标


oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

前面已经提到过使用显式游标需要 4 个步骤:声明游标、打开游标、读取游标和关闭游标。下面就说明显式游标如何创建和使用。

声明游标

CURSOR 游标名称 [ 参数列表 ] IS <SELECT 语句 >

其中,参数列表是可选项,如果需要参数

参数名称 [IN] 数据类型 [{:=|DEFAULT} 参数值 ]

需要注意的是,参数只能定义数据类型,但是不能有大小,可以给参数设定一个默认值,

此时,调用的时候如果没有参数数值传递给游标时,就使用这个默认值。参数可以有多个

此外,定义游标的时候还要注意以下几点

● 游标必须在 PL/SQL 数据库的声明部分中定义。

● 定义游标时并没有生成数据,只是将定义信息保存到数据字典中。

● SeLect 语句不能包含 INtO 子句。

例如,下面的语句定义一个游标 cur_emp,该游标用来读取 emp 数据表中所有员工的员工号和姓名信息。

CURSOR cur_emp IS SELECT empno,ename FROM emp;

 上面这个例子没有使用参数,下面这个例子使用了参数

CURSOR cur_emp(var_job IN VARCHAR2:='clerk') IS SELECT empno,ename FROM emp WHEREjob=var_job;

在上面这个例子中,游标定义了一个输入参数 var_job,数据类型为 varchar2,但是要注意此时并没有定义长度,如果定义长度就错了。

这个参数用来接受外部传来的值,如果调用游标时没有传入参数,则使用默认值“clerk”,游标实现查询 emp 表中部门参数 var_job 中的所有员工的信息

打开游标

游标定义完成后,还不能直接使用,在使用之前,必须先打开。打开游标的基本语法如下所示

OPEN 游标名称 [ 参数值 ]

其中,参数值是可选项。如果在游标声明的时候定义了参数,并有初始化值,但打开的时候没有使用参数,则游标就使用定义时参数的初始值;

如果打开的时候指定了参数值,则游标就使用这个参数值。

同样,这里和声明时参数可以有多个一样,参数值也可以有多个。

例如,下面例子打开游标 cur_emp

OPEN cur_emp;

如果带参数值,可以使用下面的语句。

OPEN cur_emp(‘SALESMAN’)

上面这个带参数值的游标打开时,将“sAlesMAN”赋值给游标的输入参数 var_job,

当然,如果调用时没有输入参数值,则 var_job 还是用定义时默认的“clerk”。

读取游标

游标打开后,缓冲区中是查询结果,此时可以使用游标把查询结果集合中的记录分别读取出来,基本语法如下所示。

FETCH 游标名称 INTO < 变量列表 >|< 记录变量 >

游标刚打开时,游标指针指向查询结果集合中的第一条记录,使用 fetch...iNto...语句读取数据后,游标指针自动指向下一条记录。

因此,可以把 fetch...iNto...语句与循环结构相结合,读取缓冲区中所有数据,可以使用上一节介绍的游标属性判断是否还有数据,数据个数等。

注意,游标指针只能增加,不能减少,即只能向下移动,不能后退。

此外,iNto 子句中变量个数、顺序、数据类型都必须与缓冲区中每个记录的字段变量、顺序和数据类型一致,

或者说与游标定义时 select 语句中的一样。

也可以定义一个记录变量,来存储游标指向记录中的数据。比如下面这个形式

FETCH cur_emp INTO v_id,v_name;

上面语句将游标当前指向的记录中员工编号和员工姓名分别送到 v_id 和 v_name 变量中。

关闭游标

游标使用完后,要记得关闭,释放缓冲区所占用的系统资源,基本语法如下所示

CLOSE 游标名称

例如,下面语句关闭游标 cur_emp

CLOSE sur_emp;

相关推荐

  1. Python实战:Python虚拟环境(venv)创建使用

    2024-04-14 02:26:02       21 阅读
  2. Gitee仓库创建使用

    2024-04-14 02:26:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 02:26:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 02:26:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 02:26:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 02:26:02       18 阅读

热门阅读

  1. 谷歌推出无限上下文的新Transformer

    2024-04-14 02:26:02       13 阅读
  2. 制导武器的发展趋势

    2024-04-14 02:26:02       27 阅读
  3. Apache Spark

    2024-04-14 02:26:02       12 阅读
  4. 爬虫ip被限制了怎么解决

    2024-04-14 02:26:02       13 阅读
  5. MVC设计模式的思想

    2024-04-14 02:26:02       14 阅读
  6. Unity3D 立方体纹理与自制天空盒详解

    2024-04-14 02:26:02       15 阅读
  7. Go语言中工作负载类型对并发的影响

    2024-04-14 02:26:02       13 阅读
  8. 分库分表-简单了解

    2024-04-14 02:26:02       12 阅读
  9. 电子邮件协议学习

    2024-04-14 02:26:02       11 阅读
  10. Unity DOTS1.0 入门(1) ECS机制与概述

    2024-04-14 02:26:02       16 阅读
  11. 网络工程师练习题(13)

    2024-04-14 02:26:02       13 阅读
  12. Redis GEO实现附近的人功能

    2024-04-14 02:26:02       16 阅读
  13. MySQL基础练习题:习题31-End

    2024-04-14 02:26:02       13 阅读