sp_cursorexecute (Transact-SQL)

基于 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 输入值的必需的参数。

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