sp_cursorexecute (Transact-SQL)
Создает и заполняет курсор на основе плана выполнения, который был создан процедурой sp_cursorprepare. Эта процедура в сочетании с процедурой sp_cursorprepare делает то же самое, что процедура sp_cursoropensp_cursoropen, но обработка разбита на два этапа. Для вызова процедуры sp_cursorexecute необходимо задать ID = 4 в пакете потока табличных данных (TDS).
Синтаксис
sp_cursorexecute
prepared_handle
,
cursor
[ , scrollopt[ OUTPUT ]
[ , ccopt[ OUTPUT ]
[ ,rowcount OUTPUT [ ,bound param][,...n]]]]]
Аргументы
prepared_handle
Значение дескриптора подготовленной процедуры, возвращаемое sp_cursorprepare. Параметр prepared_handle является обязательным и требует входного значения типа int.cursor
Идентификатор курсора, сформированный в SQL Server. Параметр cursor является обязательным и должен указываться во всех последующих процедурах, работающих с этим курсором, например sp_cursorfetch.scrollopt
Параметр прокрутки. Параметр scrollopt необязательный и требует входного значения типа int. Параметр scrollopt для процедуры sp_cursorexecute имеет такие же варианты значений, как и для процедуры sp_cursoropen.Примечание Значение PARAMETERIZED_STMT не поддерживается.
Важно! Если значение scrollopt не указано, то по умолчанию используется значение KEYSET независимо от значения scrollopt , указанного в процедуре sp_cursorprepare.
ccopt
Параметр управления параллелизмом. Параметр ccopt является необязательным, требует входного значения типа int. Параметр ccopt для процедуры sp_cursorexecute имеет такие же варианты значений, как и для процедуры sp_cursoropen.Важно! Если значение ccopt не указано, то по умолчанию используется значение OPTIMISTIC независимо от значения ccopt, указанного в процедуре sp_cursorprepare.
rowcount
Необязательный параметр, который указывает число строк буфера выборки, которые будут использоваться с AUTO_FETCH. Значение по умолчанию — 20 строк. Интерпретация параметра rowcount зависит от того, назначено значение как входное или как возвращаемое.Как входное значение
Как возвращаемое значение
Если параметр AUTO_FETCH задается с курсорами FAST_FORWARD, то параметр rowcount представляет число строк, которые должны быть помещены в буфер выборки.
Представляет число строк в результирующем наборе. Если для параметра scrollopt задано значение AUTO_FETCH, то параметр rowcount возвращает число строк, выбранных в буфер выборки.
bound_param
Означает необязательное использование дополнительных параметров.Примечание Все параметры после пятого передаются в план инструкции как входные.
Значение кодов возврата
Параметр rowcount может возвращать следующие значения.
Значение |
Описание |
---|---|
-1 |
Число строк неизвестно. |
-n |
Действует асинхронное заполнение. |
Замечания
Параметры scrollopt и ccopt
Параметры scrollopt и ccopt могут оказаться полезными в том случае, если кэшированные планы вытесняются в серверный кэш. Это означает, что подготовленный дескриптор, идентифицирующий инструкцию, нужно перекомпилировать. Значения параметров scrollopt и ccopt должны совпадать со значениями, переданными в исходном запросе в процедуру sp_cursorprepare.
Примечание |
---|
Параметру scrollopt не следует присваивать значение PARAMETERIZED_STMT. |
При невозможности найти совпадающие значения будет проведена повторная компиляция планов, отрицающая операции подготовки и выполнения.
Замечания по RPC и TDS
Входной флажок RPC RETURN_METADATA может быть установлен в значение 1, чтобы в потоке TDS возвращались метаданные списка выбора курсора.
См. также