sp_cursorprepare (Transact-SQL)
Компилирует инструкцию или пакет курсора в план выполнения, но не создает курсор. Затем скомпилированная инструкция может использоваться процедурой sp_cursorexecute. Эта процедура в сочетании с процедурой sp_cursorexecute делает то же самое, что процедура sp_cursoropen, но обработка разбита на два этапа. Для вызова процедуры sp_cursorprepare необходимо задать ID = 3 в пакете потока табличных данных (TDS).
Синтаксис
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 |
Success |
0x0001 |
Failure |
1FF6 |
Невозможно вернуть метаданные.
Примечание
Причина в том, что эта инструкция не создает результирующий набор. Например, это инструкция INSERT или DDL.
|
Примеры
Если параметр stmt параметризован и значение PARAMETERIZED_STMT scrollopt равно ON, то строка имеет следующий формат:
{ <имя локальной переменной><тип данных> } [ ,…n ]
См. также