sp_cursorexecute (Transact-SQL)
基于 sp_cursorprepare 创建的执行计划创建并填充游标。 此过程与 sp_cursorprepare 结合,与 sp_cursoropen 具有相同功能,但它拆分为两个阶段。 通过在表格格式数据流 (TDS) 包中指定 ID = 4 来调用 sp_cursorexecute。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
语法
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_cursorfetchscrollopt
滚动选项。 scrollopt 是一个可选参数,它需要 int 输入值。 sp_cursorexecute scrollopt 参数与 sp_cursoropen 具有相同的值选项。备注
不支持 PARAMETERIZED_STMT 值。
重要提示 如果未指定 scrollopt 值,则默认值为 KEYSET,而不考虑在 sp_cursorprepare 中指定的 scrollopt 值。
ccopt
币种控制选项。 ccopt 是一个可选参数,它需要 int 输入值。 sp_cursorexecute ccopt 参数与 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 流中返回游标选择列表元数据。