sp_cursorexecute (Transact-SQL)

适用于SQL Server

基于 sp_cursorprepare 创建的执行计划创建并填充游标。 此过程(加上sp_cursorprepare)的功能与sp_cursoropen相同,但分为两个阶段。 通过在表格数据流 (TDS) 数据包中指定 ID =4 来调用sp_cursorexecute。

Transact-SQL 语法约定

语法

  
sp_cursorexecute prepared_handle, cursor  
    [ , scrollopt[ OUTPUT ]  
    [ , ccopt[ OUTPUT ]  
    [ ,rowcount OUTPUT [ ,bound param][,...n]]]]]  

参数

prepared_handle
由sp_cursorprepare返回的已准备语句 句柄 值。 prepared_handle 是调用 int 输入值的必需参数。

cursor
为 SQL Server 生成的游标标识符。 cursor 是必须在对游标执行的所有后续过程上提供所需的参数,例如sp_cursorfetch

scrollopt
滚动选项。 scrollopt 是一个可选参数,需要 int 输入值。 sp_cursorexecutescrollopt 参数的值选项与 sp_cursoropen 的值选项相同。

注意

不支持 PARAMETERIZED_STMT 值。

重要

如果未指定 scrollopt 值,则默认值为 KEYSET,而不考虑在 sp_cursorprepare 中指定的 scrollopt 值。

ccopt
币种控制选项。 ccopt 是一个可选参数,需要 int 输入值。 sp_cursorexecuteccopt 参数的值选项与sp_cursoropen的值选项相同。

重要

如果未指定 ccopt 值,则默认值为 OPTIMISTIC,而不考虑在 sp_cursorprepare 中指定的 ccopt 值。

rowcount
一个可选参数,指示要用于 AUTO_FETCH 的提取缓冲区行数。 默认值为 20 行。 当分配为输入值与返回值时,rowcount 的行为方式不同。

作为输入值 作为返回值
使用FAST_FORWARD游标 行计数 指定AUTO_FETCH表示要放入提取缓冲区的行数。 表示结果集中的行数。 指定 scrollopt AUTO_FETCH 值时,行计数将返回提取缓冲区中的行数。

bound_param
指示可选使用其他参数。

注意

第五个参数之后的任何参数都将作为输入参数传递到语句计划。

代码返回值

rowcount 可能会返回以下值。

说明
-1 未知的行数。
-n 异步填充生效。

注解

scrollopt 和 ccopt 参数

当缓存的计划抢占服务器缓存时,scrolloptccopt 非常有用,这意味着必须重新编译标识语句的已准备句柄。 scrolloptccopt 参数值必须与原始请求中发送的值匹配,才能sp_cursorprepare。

注意

不应将PARAMETERIZED_STMT分配给 scrollopt

如果无法提供匹配值,则将导致重新编译计划,而取消 prepare 和 execute 操作。

RPC 和 TDS 注意事项

RPC RETURN_METADATA 输入标志可设置为 1,以请求在 TDS 流中返回游标选择列表元数据。

另请参阅

sp_cursoropen (Transact-SQL)
sp_cursorfetch (Transact-SQL)
系统存储过程 (Transact-SQL)