sp_cursorexecute (Transact-SQL)
适用于:SQL Server
基于 sp_cursorprepare 创建的执行计划创建并填充游标。 此过程(加上sp_cursorprepare)的功能与sp_cursoropen相同,但分为两个阶段。 通过在表格数据流 (TDS) 数据包中指定 ID =4 来调用sp_cursorexecute。
语法
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 参数
当缓存的计划抢占服务器缓存时,scrollopt 和 ccopt 非常有用,这意味着必须重新编译标识语句的已准备句柄。 scrollopt 和 ccopt 参数值必须与原始请求中发送的值匹配,才能sp_cursorprepare。
注意
不应将PARAMETERIZED_STMT分配给 scrollopt。
如果无法提供匹配值,则将导致重新编译计划,而取消 prepare 和 execute 操作。
RPC 和 TDS 注意事项
RPC RETURN_METADATA 输入标志可设置为 1,以请求在 TDS 流中返回游标选择列表元数据。
另请参阅
sp_cursoropen (Transact-SQL)
sp_cursorfetch (Transact-SQL)
系统存储过程 (Transact-SQL)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈