PL/SQL的游标

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

基本原理

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

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

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

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

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

显式游标

  

1.声明游标

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

2.打开游标

  OPEN<游标名>

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

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

    1)检查联编变量的取值

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

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

3.提取游标

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

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

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

4.关闭游标

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

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

 

 

  

 

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐