当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据库技术(84)

MSSQL
SQL Server--全文本检索的应用(一)
SQL 2005的SSIS与Oracle的迁移性能
SQL优化实例:从运行30分钟到运行只要30秒
无法在SQL Server2005 Manger Studio 中录入中文的问题
SQL Artisan多表查询和统计
SQL Server数据库开发人员在应聘时经常被问到哪些问题
一个完整的SQL SERVER数据库全文索引的示例
SQL Server安全之加密术和SQL注入攻击
如何对SQL Server中的tempdb“减肥”
SQL Server 2005升级的十个步骤
如何在SQL Server开发中融入极限编程技术
SQL Server应用程序高级SQL注入(下)
SQL Server应用程序高级SQL注入(上)
SQL Server连接中的常见错误
IIS中SQL Server数据库的安全问题
SQL Server 2005区域配置和安全工具
保护 SQL Server 的十个步骤
如何利用SQL Server 2000的复制选项
SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
SQL SERVER 2005同步复制技术的应用

MSSQL 中的 SQL Server数据库技术(84)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 44 ::
收藏到网摘: n/a

当游标被成功打开以后,就可以从游标中逐行地读取数据,以进行相关处理。从游标中读取数据主要使用FETCH 命令。其语法规则为:

    各参数含义说明如下:
•NEXT
返回结果集中当前行的下一行,并增加当前行数为返回行行数。如果FETCH NEXT是第一次读取游标中数据,则返回结果集中的是第一行而不是第二行。
•PRIOR
返回结果集中当前行的前一行,并减少当前行数为返回行行数。如果FETCH PRIOR是第一次读取游标中数据,则无数据记录返回,并把游标位置设为第一行。
•FIRST
返回游标中第一行。
•LAST
返回游标中的最后一行。
•ABSOLUTE {n | @nvar}
如果n 或@nvar 为正数,则表示从游标中返回的数据行数。如果n 或@nvar 为负数,则返回游标内从最后一行数据算起的第n 或@nvar 行数据。若n 或@nvar 超过游标的数据子集范畴,则@@FETCH_STARS 返回-1, 在该情况下,如果n 或@nvar 为负数,则执行FETCH NEXT 命令会得到第一行数据,如果n 或@nvar为正值,执行FETCH PRIOR 命令则会得到最后一行数据。n 或@nvar 可以是一固定值也可以是一smallint, tinyint 或int 类型的变量。
•RELATIVE {n | @nvar}
若n 或@nvar 为正数,则读取游标当前位置起向后的第n 或@nvar 行数据;如果n 或@nvar 为负数,则读取游标当前位置起向前的第n 或@nvar 行数据。若n 或@nvar 超过游标的数据子集范畴,则@@FETCH_STARS 返回-1, 在该情况下,如果n 或@nvar 为负数,则执行FETCH NEXT 命令则会得到第一行数据;如果n 或@nvar 为正值,执行FETCH PRIOR 命令则会得到最后一行数据。n 或@nvar 可以是一固定值也可以是一smallint, tinyint或int 类型的变量。
•INTO @variable_name[,...n]
允许将使用FETCH 命令读取的数据存放在多个变量中。在变量行中的每个变量必须与游标结果集中相应的列相对应,每一变量的数据类型也要与游标中数据列的数据类型相匹配。
    @@FETCH_STATUS 全局变量返回上次执行FETCH 命令的状态。在每次用FETCH从游标中读取数据时,都应检查该变量,以确定上次FETCH 操作是否成功,来决定如何进行下一步处理。@@FETCH_STATUS 变量有三个不同的返回值,如表13-2。

    在使用FETCH 命令从游标中读取数据时,应该注意以下的情况:
    当使用SQL-92 语法来声明一个游标时,没有选择SCROLL 选项时,只能使用FETCH NEXT 命令来从游标中读取数据,即只能从结果集第一行按顺序地每次读取一行,由于不能使用FIRST、 LAST、 PRIOR, 所以无法回滚读取以前的数据。如果选择了SCROLL 选项,则可能使用所有的FETCH 操作。
    当使用MS SQL SERVER 的扩展语法时,必须注意以下约定:
•如果定义了FORWARD-ONLY 或FAST_FORWARD 选项,则只能使用FETCH NEXT命令;
•如果没有定义DYNAMIC, FORWARD_ONLY 或FAST_FORWARD 选项,而定义了KEYSET, STATIC 或SCROLL 中的任何一个,则可使用所有的FETCH 操作;
•DYNAMIC SCROLL 游标支持所有的FETCH, 选项但禁用ABSOLUTE 选项。