- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库中的书签——游标游标的引入
? ? ? ?为解决在多条结果集的情况下,要逐一读取每一条记录所带来的麻烦。游标为我们提供了一种较好的解决方案。
游标的组成
? ? ? ?每一个游标必须有四个组成部分。且必须符合下面的顺序。
1,?????????????declare游标(用来声明游标)
2,?????????????open游标
3,?????????????从一个游标中fetch信息
4,?????????????Close或deallocate游标
游标的声明
? ? ? ?声明游标主要包含以下内容:游标名字,数据来源表和列,选取条件,属性仅读或可修改
? ? ? ?其语法格式如下:
? ? ? ?Declare 游标名称 cursor
? ? ? ?[local|glocal] ? ? ? ? ? ? ? ??指定游标的作用域是局部的还是全局的
? ? ? ?[forward_only|scroll]????选择forward_only则游标只能从第一行滚动到最后一行。Scroll表明所有的提取操作都可用,如果不使用该保留字则只能进行next操作。
? ? ? ?[read_only] ? ? ? ? ? ? ? ? ?表明不允许游标内的数据被更新
? ? ? ?For 选择语句 ? ? ? ? ? ? ??是定义结果集的select语句,应该注意的是在游标中不能使用compute等语句。
? ? ? ?[for[update[of 字段名称1,字段名称2…]]]???定义在游标中可被修改的列
打开游标
? ? ? ?游标声明以后,如果要从游标中读取数据,必须打开游标,使用open命令,语法格式如下:
Open?游标名称
读取游标中的数据——fetch
? ? ? ?Fetch
? ? ? ?[[next|prior|first|last|absolute{n|@nvar}|relative{n|@nvar}]from]cursor_name
? ? ? ?[into??@variable_name1,@variable_name2…]
? ? ? ?Next:返回结果集中当前行的下一行,并增加当前行数为返回行行数,如果fetchnext是第一次读取游标中数据则返回结果集中的是第一行而不是第二行
? ? ? ?Prior:返回结果集中当前行的前一行并减少当前行数为返回行行数。如果fetchprior是第一次读取游标中数据则无数据记录返回并把游标位置设为第一行。
? ? ? ?First:返回游标中第一行
? ? ? ?Last:返回游标中的最后一行
? ? ???Absolute{n|@nvar}:如果n或者@nvar为正数,则表示从游标中返回的数据行数。如果n货@nvar为负数,则返回游标内从最后一行数据算起的第n或@nvar行数据。
若n或@nvar超过游标的数据子集范畴,则@@fetch_stars返回-1。在该情况下,如果n或@nvar为负数,则执行fetchnext命令会得到第一行数据,如果为正值,执行fetch prior命令则会得到最后一行数据。n或@nvar可以是一固定值,也可以是一smallint,tinyint或int类型的变量。
? ? ? ?Relative {n|@nvar}:若n或@nvar为正数,则读取游标当前位置起向后的第n或@nvar行数据。如果为负数,则读取游标当前位置起向前的第n或@nvar行数据。若n或@nvar超过游标的数据子集范畴,则@@fetch_stars返回-1.在该情况下,如果n或@nvar为负数,则执行fetchnext命令则会得到第一行数据,如果为正值,执行fetch prior命令则会得到最后一行数据。n或@nvar可以是一固定值,也可以是一smallint,tinyint或int类型的变量。
? ? ? ?Into@variable_name[,…n]:允许将使用fetch命令读取的数据存放在多个变量中,在变量行中的每个变量必须与游标结果集中相应的列相对应,每一变量的数据类型也要与游标中数据列的数据类型相匹配。
检查游标状态
? ? ? ?@@fetch_status:全局变量,返回上次执行fetch命令的状态。在每次用fetch从游标中读取数据时,都应检查该变量以确定上次fetch操作是否成功,来决定如何进行下一步处理。@@fetch_status变量有三种不同的返回值。
0:表示成功取出了一行。
-1:表示未取到数据,因为所要求游标位置超出了结果集
-2:表示返回的行已经不再是结果集的一个成员。这种情况只有在游标不是insensitive的情况下出现,即其他进程已删除了行或改变了游标打开的关键值
编辑当前游标行
? ? ? ?进行定位修改或删除游标中数
原创力文档


文档评论(0)