sp_cursorprepare (Transact-SQL)
Компилирует инструкцию или пакет курсора в план выполнения, но не создает курсор. Затем скомпилированная инструкция может использоваться процедурой sp_cursorexecute. Эта процедура вместе с sp_cursorexecute имеет те же функции, что и sp_cursoropen,, но разделенные на два этапа. Процедура sp_cursorprepare вызывается при указании ID = 3 в пакете потока табличных данных (TDS).
Синтаксические обозначения 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.Примечание Используйте в качестве входного значения строку ntext, если параметр stmt параметризован и значение PARAMETERIZED_STMT scrollopt равно ON.
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
OPTIMISTIC_ACCEPTABLE
Как и в случае с параметром scrollpt, SQL Server может присвоить не то значение, которое запрашивалось.
Замечания
Параметр состояния RPC может иметь следующие значения.
Значение |
Описание |
||
---|---|---|---|
0 |
Успешно |
||
0x0001 |
Failure |
||
1FF6 |
Невозможно вернуть метаданные.
|
Примеры
Если параметр stmt параметризован и значение PARAMETERIZED_STMT scrollopt равно ON, то строка имеет следующий формат:
{ <local variable name> <data type> } [ ,…n ]
См. также
Справочник
sp_cursorexecute (Transact-SQL)