SCROLL 指定所有的提取选项(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE)均可用。如果未在ISO DECLARE CURSOR中指定SCROLL,则 NEXT 是唯一支持的提取选项。如果也指定了FAST_FORWARD,则不能指定SCROLL。 select_statement 定义游标结果集的标准 SELECT语句。在游标声明的select_statement中不允许使用关键字 FOR BROWSE和INTO。 如果select_statement中的子句与所请求的游标类型的功能有冲突,则 SQL Server 会将游标隐式转换为其他类型。 READ ONLY 禁止通过该游标进行更新。在UPDATE或DELETE语句的WHERE CURRENT OF 子句中不能引用游标。该选项优先于要更新的游标的默认功能。 UPDATE [OF column_name [,...n]] 定义游标中可更新的列。如果指定了OF column_name [,...n],则只允许修改所列出的列。如果指定了UPDATE,但未指定列的列表,则可以更新所有列。 cursor_name 是所定义的Transact-SQL 服务器游标的名称。cursor_name必须符合标识符规则。 LOCAL 指定该游标的范围对在其中创建它的批处理、存储过程或触发器是局部的。该游标名称仅在这个作用域内有效。在批处理、存储过程、触发器或存储过程 OUTPUT 参数中,该游标可由局部游标变量引用。OUTPUT 参数用于将局部游标传递回调用批处理、存储过程或触发器,它们可在存储过程终止后给游标变量分配参数使其引用游标。除非OUTPUT 参数将游标传递回来,否则游标将在批处理、存储过程或触发器终止时隐式释放。如果OUTPUT 参数将游标传递回来,则游标在最后引用它的变量释放或离开作用域时释放。 GLOBAL 指定该游标的作用域对来说连接是全局的。在由连接执行的任何存储过程或批处理中,都可以引用该游标名称。该游标仅在断开连接时隐式释放。 注意,如果GLOBAL和LOCAL 参数都未指定,则默认值由 default to local cursor数据库选项的设置控制。 FORWARD_ONLY 指定游标只能从第一行滚动到最后一行。FETCH NEXT 是唯一支持的提取选项。如果在指定FORWARD_ONLY时不指定STATIC、KEYSET和DYNAMIC 关键字,则游标作为DYNAMIC游标进行操作。如果FORWARD_ONLY和SCROLL 均未指定,则除非指定STATIC、KEYSET或DYNAMIC 关键字,否则默认为FORWARD_ONLY。STATIC、KEYSET和DYNAMIC游标默认为SCROLL。与ODBC和ADO 这类数据库 API不同,STATIC、KEYSET和DYNAMIC Transact-SQL游标支持 FORWARD_ONLY。 STATIC 定义一个游标,以创建将由该游标使用的数据的临时复本。对游标的所有请求都从tempdb中的这一临时表中得到应答;因此,在对该游标进行提取操作时返回的数据中不反映对基表所做的修改,并且该游标不允许修改。 KEYSET 指定当游标打开时,游标中行的成员身份和顺序已经固定。对行进行唯一标识的键集内置在tempdb 内一个称为keyset的表中。 注意,果查询引用了至少一个无唯一索引的表,则键集游标将转换为静态游标。 对基表中的非键值所做的更改(由游标所有者更改或由其他用户提交)可以在用户滚动游标时看到。其他用户执行的插入是不可见的(不能通过 Transact-SQL 服务器游标执行插入)。如果删除某一行,则在尝试提取该行时返回值为-2的@@FETCH_STATUS。从游标外部更新键值类似于删除旧行后再插入新行。具有新值的行不可见,且尝试提取具有旧值的行时返回的@@FETCH_STATUS为-2。如果通过指定WHERE CURRENT OF 子句来通过游标执行更新,则新值可见。 DYNAMIC 定义一个游标,以反映在滚动游标时对结果集内的各行所做的所有数据更改。行的数据值、顺序和成员身份在每次提取时都会更改。动态游标不支持 ABSOLUTE 提取选项。 FAST_FORWARD 指定启用了性能优化的FORWARD_ONLY、READ_ONLY游标。如果指定了SCROLL或FOR_UPDATE,则不能也指定FAST_FORWARD。 注意,在SQL Server 2005 及更高版本中,FAST_FORWARD和FORWARD_ONLY可以用在同一个 DECLARE CURSOR语句中。 READ_ONLY 禁止通过该游标进行更新。在UPDATE或DELETE语句的WHERE CUR
原创力文档

文档评论(0)