sp_cursorprepare (Transact-SQL)
将游标语句或批处理编译成执行计划,但并不创建游标。 编译的语句以后可供 sp_cursorexecute 使用。 此过程与 sp_cursorexecute 结合,与 sp_cursoropen, 具有相同功能,但它拆分为两个阶段。 可通过在表格格式数据流 (TDS) 包中指定 ID = 3 来调用 sp_cursorprepare。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
语法
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)