sp_cursorprepare (Transact-SQL)

将游标语句或批处理编译成执行计划,但并不创建游标。编译的语句以后可供 sp_cursorexecute 使用。此过程与 sp_cursorexecute 结合,与 sp_cursoropen, 具有相同功能,但它拆分为两个阶段。sp_cursorprepare 通过在表格格式数据流 (TDS) 包中指定 ID = 3 来调用。

主题链接图标Transact-SQL 语法约定

语法

        sp_cursorprepare 
        prepared_handle
         OUTPUT, 
        params
         , 
        stmt
         , 
        options
            [ , scrollopt[ , ccopt]]

参数

  • prepared_handle
    SQL Server 生成的已准备的“句柄”标识符,它返回整数值。

    注意注意

    接着,将 prepared_handle 提供给 sp_cursorexecute 过程以打开游标。一旦创建了句柄,它就一直存在,直到您注销或通过 sp_cursorunprepare 过程显式删除它。

  • params
    标识参数化语句。变量的 params 定义替换为语句中的参数标记。params 是一个必需参数,它需要 ntext、nchar 或 nvarchar 输入值。如果语句未参数化,则输入一个 NULL 值。

    注意注意

    当 stmt 已参数化且 scrollopt PARAMETERIZED_STMT 值为 ON 时,使用 ntext 字符串作为输入值。

  • stmt
    定义游标结果集。stmt 参数是必需的,它需要 ntext、nchar 或 nvarchar 输入值。

    注意注意

    用于指定 stmt 值的规则与用于 sp_cursoropen 的规则相同,但例外是 stmt 字符串数据类型必须为 ntext。

  • options
    一个可选参数,它返回游标结果集列的说明。options 要求以下 int 输入值。

    说明

    0x0001

    RETURN_METADATA

  • scrollopt
    滚动选项。scrollopt 是一个可选参数,它需要以下 int 输入值之一。

    说明

    0x0001

    KEYSET

    0x0002

    DYNAMIC

    0x0004

    FORWARD_ONLY

    0x0008

    STATIC

    0x10

    FAST_FORWARD

    0x1000

    PARAMETERIZED_STMT

    0x2000

    AUTO_FETCH

    0x4000

    AUTO_CLOSE

    0x8000

    CHECK_ACCEPTED_TYPES

    0x10000

    KEYSET_ACCEPTABLE

    0x20000

    DYNAMIC_ACCEPTABLE

    0x40000

    FORWARD_ONLY_ACCEPTABLE

    0x80000

    STATIC_ACCEPTABLE

    0x100000

    FAST_FORWARD_ACCEPTABLE

    因为所请求的值可能不适合由 stmt 定义的游标,所以,此参数可同时用作输入和输出。在此类情况下,SQL Server 分配一个适当的值。

  • ccopt
    并发控制选项。ccopt 是一个可选参数,它需要以下 int 输入值之一。

    说明

    0x0001

    READ_ONLY

    0x0002

    SCROLL_LOCKS(以前称为 LOCKCC)

    0x0004

    OPTIMISTIC(以前称为 OPTCC)

    0x0008

    OPTIMISTIC(以前称为 OPTCCVAL)

    0x2000

    ALLOW_DIRECT

    0x4000

    UPDT_IN_PLACE

    0x8000

    CHECK_ACCEPTED_OPTS

    0x10000

    READ_ONLY_ACCEPTABLE

    0x20000

    SCROLL_LOCKS_ACCEPTABLE

    0x40000

    OPTIMISTIC_ACCEPTABLE

    0x80000

    OPTIMISITC_ACCEPTABLE

    借助于 scrollpt,SQL Server 可以分配与所请求的值不同的其他值。

注释

RPC 状态参数为以下值之一:

说明

0

成功

0x0001

失败

1FF6

无法返回元数据。

注意注意
原因是语句未生成结果集;例如,它是一个 INSERT 或 DDL 语句。

示例

当 stmt 已参数化且 scrollopt PARAMETERIZED_STMT 值为 ON 时,字符串的格式如下所示:

{ <本地变量名><数据类型> } [ ,…n ]