第三章 游标的定义与使用.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 游标的定义和使用 3.1 游标的分类 前面介绍的SELECT语句只能处理返回一行数据的情况,当SELECT语句返回多个数据行时,必须使用游标。 游标是指向SELECT语句查询出的多行数据的指针,SELECT语句查询出的行组成一结果表,称为活动集。游标指向的行称为当前行。一般说来,游标分为三类: (1)滚动游标 (2)非滚动游标 (3)更新游标 滚动游标是指程序可以根据需要指向活动集的某一行数据,即游标的位置可来回移动。非滚动游标是指活动集中的每行只能依次被读出。更新游标是非滚动游标,它的特点在于:数据库对游标指向的当前行加锁,当程序读下一行数据时,本行数据解锁,下一行数据加锁。锁加在数据库基本表对应的行上。 另外一种分类方法是将ESQL/C提供的游标分为两种类型,select游标和insert游标,select游标用于处理查询结果为多行数据的select语句;insert游标用于成块地往数据库中插入数据。 3.2 定义与使用游标的语句 定义和使用游标的语句以及与游标相关的语句有五个: (1)DECLARE语句 这条语句用来定义游标,其一般形式是: DECLARE 游标名 [SCROLL] CURSOR FOR SELECT语句 有关键字SCROLL的DECLARE语句定义的是滚动游标。SELECT语句可表为: SELECT子句 [INTO子句] FROM子句 [WHERE子句] [GROUP BY子句] [HAVING子句] [ORDER BY子句] [INTO TEMP子句] DECLARE语句的作用是在数据库系统表中分配该游标资源,给游标一个自己的名字。游标名的作用范围是只要游标不被释放(FREE),在定义它的模块内有效。 (2)OPEN语句 在取得游标中的数据之前必须先执行OPEN语句来打开游标。OPEN语句的形式是: OPEN游标名 OPEN语句的作用是,把SELECT语句送到SQL语句检查器中分析,决定活动集的内容,为SELECT语句的结果分配一块内存空间。对于打开滚动游标来说,还要建一个临时表。同时,OPEN语句把游标定位到活动集的第一行。 (3)FETCH语句 FETCH语句的一般形式: FETCH [位置] 游标名 [INTO variable-list] 位置可以是这些关键字之一:NEXT,PREVIOUS,PRIOR,FIRST,LAST,CURRENT,RELATIVE n,ABSOLUTE n;FETCH中的INTO子句与SELECT语句中的INTO子句,二者必居其一。INTO关键字后跟宿主变量。 FETCH语句的作用是使游标定位到活动集的某行上。不管是否带有选择项,FETCH在完成游标的定位后,如果游标定位在活动集上,则把游标所在行的各列值分别赋给INTO子句中的各变量,如果游标定位在活动集以外,则把全局变量status的值置为NOTFOUND。游标定位在活动集第一行时执行FETCH PREVIOUS语句,或者,当游标定位在活动集最后一行时执行FETCH NEXT语句都会把游标定位到活动集以外。因此,使用FETCH语句时,经常要检查status的值是否等于NOTFOUND,以便进一步的操作。 (4)CLOSE语句 关闭游标,CLOSE语句的一般形式是: CLOSE游标名 执行这条语句会释放OPEN语句分配的存储资源。需要再用该游标时,执行OPEN语句。 (5)FREE语句 FREE语句将把登记在系统表中的游标名删除,此后便不能再OPEN该游标了。 3.3 select游标 C语言中嵌入的单个select语句,只能处理查询结果恰好是一行数据的情况,当查询出多行数据时,ESQL/C就会报错。为此,ESQL/C提供了游标这一手段来处理这种情况。 查询语句select返回的多行数据称为活动集。ESQL/C程序中,一次只能处理活动集中的一行,这一行就叫做当前行。游标是指向当前行的一个指针。可见,游标是由活动集和一个指针来组成的。游标有两种状态,打开和关闭。当游标处于打开状态时,它指向活动集的位置有四种情况:(1)指向当前行;(2)指向两行之间;(3)指向第一行的前面;(4)指向最后一行的后面;当游标处于关闭状态时,它不再和活动集相关联。 使用select游标的步骤如下: (1)将游标与select语句相关系:使用declare语句将一个命名的游标与要处理的select语句联系在一起。游标有两种,普通游标和滚动游标。在普通

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档