sp_cursorexecute (Transact-SQL)

适用范围:SQL Server

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

Transact-SQL 语法约定

语法

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

参数

prepared_handle

由 . 返回的sp_cursorprepare已准备语句句柄值。 prepared_handle参数为 int,不能NULL

cursor

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

scrollopt

滚动选项。 scrollopt 参数为 int,默认值为 NULL. sp_cursorexecute scrollopt 参数的值选项与 sp_cursoropen.

PARAMETERIZED_STMT不支持该值。

如果未指定 scrollopt 值,则默认值KEYSET考虑在中指定的 sp_cursorpreparescrollopt 值。

ccopt

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

如果未指定 ccopt 值,则默认值OPTIMISTIC考虑在中指定的 sp_cursorprepareccopt 值。

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

未能提供匹配值会导致重新编译计划,从而否定准备和执行操作。

RPC 和 TDS 注意事项

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