欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PL/SQL的游标

程序员文章站 2022-03-30 19:01:28
使用变量并不能完全满足SQL语句向应用程序输出数据的要求的,一组变量只能存放一条记录,而查询结果的记录数是不确定的,所以才有了游标的概念。 基本原理 在PL/SQL中执行select、insert、update和delete语句时,oracle会在内存中分配上下文区,即一个缓冲区。而游标就是指向该区 ......

  使用变量并不能完全满足SQL语句向应用程序输出数据的要求的,一组变量只能存放一条记录,而查询结果的记录数是不确定的,所以才有了游标的概念。

基本原理

  在PL/SQL中执行select、insert、update和delete语句时,oracle会在内存中分配上下文区,即一个缓冲区。而游标就是指向该区的一个指针。

  游标分为显式游标和隐式游标。

  显式游标是由用户声明和操作的一种游标;

  隐式游标时Oracle为所有数据操纵语句自动声明和操作的一种游标。

  在每个用户会话中,可以同时打开多个游标,其数量是由数据库初始化参数文件中的OPEN CURSOR参数定义。

显式游标

  PL/SQL的游标

1.声明游标

  Cursor<游标名> is SELECT<语句>,游标必须在引用前被声明,游标可以声明在where子句中引用Pl/Sql变量,这些变量被认为是联编变量,即已经被分配空间并映射到绝对地址的变量。

PL/SQL的游标

2.打开游标

  OPEN<游标名>

  打开游标执行select语句。执行完毕后,查询结果存入内存,游标停在查询结果的首部。

  当打可以一个游标时,会完成以下几件事情。

    1)检查联编变量的取值

    2)根据联编变量的取值,确定活动集。

    3)活动集的指针指向第一行

PL/SQL的游标

3.提取游标

  打开游标后的工作就是取值了,取值语句是fetch,用法如下:

  fetch<游标名> into <变量列表>或者fetch<游标名> into pl/sql记录

PL/SQL的游标

fetch语句每执行一次,游标向后移动一行,直到结束(游标只能逐个向后移动,而不能跳跃移动或者向前移动)

4.关闭游标

  当所有的活动集都被检索以后,游标就应该被关闭。pl/sql程序将被告知对于游标的处理已经结束,与游标相关联的资源可以被释放了。

  close<有标明>,游标关闭后不能从游标取数据了,会报如下错误:

PL/SQL的游标

PL/SQL的游标