当前页面位置: » 丰搜网 » 文档中心 » 详细内容
sql server数据库技术(84)
当游标被成功打开以后,就可以从游标中逐行地读取数据,以进行相关处理。从游标中读取数据主要使用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 选项。
| |
|
| |