sp_cursorexecute (Transact-SQL)
基于 sp_cursorprepare 创建的执行计划创建并填充游标。此过程与 sp_cursorprepare 结合,与 sp_cursoropen 具有相同功能,但它拆分为两个阶段。sp_cursorexecute 通过在表格格式数据流 (TDS) 包中指定 ID = 4 来调用。
语法
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 时,rowcount 表示要放入提取缓冲区中的行数。
表示结果集中的行数。当指定了 scrollopt AUTO_FETCH 值时,rowcount 返回提取到提取缓冲区中的行数。
bound_param
指示可选使用其他参数。注意 第五个参数之后的任何参数都将作为输入参数传递到语句计划。
代码返回值
rowcount 可能返回以下值。
值 |
说明 |
---|---|
-1 |
未知的行数。 |
-n |
异步填充生效。 |
注释
scrollopt 和 ccopt 参数
当缓存计划优先于服务器缓存时,scrollopt 和 ccopt 很有用,这意味着必须重新编译标识语句的已准备句柄。scrollopt 和 ccopt 参数值必须与在原始请求中发送给 sp_cursorprepare 的值匹配。
注意 |
---|
不应将 PARAMETERIZED_STMT 赋予 scrollopt。 |
如果无法提供匹配值,则将导致重新编译计划,而取消 prepare 和 execute 操作。
RPC 和 TDS 注意事项
RPC RETURN_METADATA 输入标志可设置为 1,以请求在 TDS 流中返回游标选择列表元数据。