21.在ESQL/C中有效使用滚动游标.doc_第1页
21.在ESQL/C中有效使用滚动游标.doc_第2页
21.在ESQL/C中有效使用滚动游标.doc_第3页
21.在ESQL/C中有效使用滚动游标.doc_第4页
21.在ESQL/C中有效使用滚动游标.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

融海咨询INFORMIX-ESQL/C应用开发第二十一章在ESQL/C中有效使用滚动游标本章讨论在使用滚动游标时遇到的问题。将学习如何使滚动游标较少地占用临时表空间,以及如何克服同陈旧数据有关的问题。为了浏览多个记录的集合,滚动游标创建了一个临时表,该临时表中存放了所有满足SELECT语句的记录,该查询语句同滚动游标相关联。DECLARE语句把一个名字同SELECT语句相关联,它需要的内存是非常少的。OPEN语句将建立一个内存缓冲区,需要使用该该缓冲区把记录从数据库送往应用程序,缓冲区的大小是依赖于机器的。FETCH语句同滚动游标一起使用时,将获取所有满足SELECT语句的记录。在上面的例子里,这将是customer表中的所有记录。这些记录写到磁盘的一个临时表中,所有其它的FECTH操作从临时表中获取它们要检索的记录。CLOSE语句释放缓冲区和删除临时表。使用滚动游标时实际上存在两个问题:临时表可能增长得非常大,以及表中的数据可能过期或称之为陈旧。所有满足SELECT语句的记录在检索时将被写到临时表中,这可能使得这些临时表变得非常的大,造成存储问题。例如,客户表花费134个字节存放一个记录,如果在客户表中有20,000个记录,而且SELECT了所有的记录,临时表将占用超过2兆字节的空间来存放检索的记录。滚动游标还有第二个问题。一旦记录读入到临时表中,所有后续的FETCH操作从该临时表获取记录。这意味着如果其他用户从客户表修改或删除记录,这些变化不会反映到临时表中,除非滚动游标再次打开。一旦明白了游标的原理,解决办法陈述起来就十分容易。为减少创建的临时表的大小,可以SELECT较少的记录或字段。为避免陈旧数据,应确保在把记录显示给用户之前,从实际的表中重新获取记录的内容。下面几页描述了一个推荐使用的过程。为实现该解决方法,使用两个游标。第一个游标,如上所示,仍是一个滚动游标,但是,它仅从客户表选择主键,而不是查询所有的字段。每次执行针对该游标的FETCH操作时,只把主键值装入到程序变量中。该值在第二个游标中使用,定义的第二个游标基于第一个游标提供的主键查询整个记录。定义第二个游标来选择整个记录。每次针对第一个游标执行FETCH操作时,针对第二个游标使用OPEN/FETCH操作。该OPEN/FETCH操作序列将迫使第二个游标每次从实际的表中获取记录。第二个游标要FETCH的记录是基于第一个游标提供的值。第一个游标是一个用于主键的滚动游标,它使你可以在主键的列表中前后移动。第二个游标不是一个滚动游标,它根据第一个游标提供的值从磁盘上获取记录信息,从而避免了陈旧数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论