sp_cursorexecute (Transact-SQL)

基于 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_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 流中返回游标选择列表元数据。

请参阅

参考

sp_cursoropen (Transact-SQL)

sp_cursorfetch (Transact-SQL)

系统存储过程 (Transact-SQL)