sp_cursorprepare (Transact-SQL)

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

主题链接图标 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 时,字符串的格式如下所示:

{ <local variable name> <data type> } [ ,…n ]

请参阅

参考

sp_cursorexecute (Transact-SQL)

sp_cursoropen (Transact-SQL)

sp_cursorunprepare (Transact-SQL)

系统存储过程 (Transact-SQL)