sp_cursorprepexec (Transact-SQL)
Компилирует план для переданной инструкции или пакета курсора, после чего создает и заполняет курсор. Процедура sp_cursorprepexec сочетает функции sp_cursorprepare и sp_cursorexecute. Для вызова этой процедуры необходимо задать ID = 5 в пакете потока табличных данных (TDS).
Синтаксис
sp_cursorprepexec
prepared handle
OUTPUT,
cursor
OUTPUT,
params
,
statement
,
options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
Аргументы
prepared handle
Сформированный системой SQL Server идентификатор подготовленного десриптора. Параметр prepared handle является обязательным и возвращает значение типа int.cursor
Идентификатор курсора, сформированный SQL Server. Параметр cursor является обязательным и должен передаваться при вызове всех последующих процедур, работающих с этим курсором, например sp_cursorfetch.params
Указывает параметризованные инструкции. Определение переменных params подставляется вместо маркеров параметров в инструкции. Параметр params является обязательным и требует входного значения типа ntext, nchar или nvarchar .Примечание
Используйте в качестве входного значения строку ntext, если параметр stmt параметризован и значение PARAMETERIZED_STMT scrollopt равно ON.
statement
Определяет результирующий набор курсора. Параметр statement обязателен и требует входного значения типа 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 может назначить не то значение, которое запрашивалось.
rowcount
Необязательный параметр, который указывает число строк буфера выборки, которые будут использоваться с AUTO_FETCH. Значение по умолчанию — 20 строк. Интерпретация параметра rowcount зависит от того, назначено значение как входное или как возвращаемое.Как входное значение
Как возвращаемое значение
Если параметр AUTO_FETCH задается с курсорами FAST_FORWARD, то параметр rowcount представляет число строк, которые должны быть помещены в буфер выборки.
Представляет число строк в результирующем наборе. Если для параметра scrollopt задано значение AUTO_FETCH, то параметр rowcount возвращает число строк, выбранных в буфер выборки.
Значения кодов возврата
Если params возвращает значение NULL, то инструкция не параметризована.