Поделиться через


sp_cursorexecute (Transact-SQL)

Создает и заполняет курсор на основе плана выполнения, который был создан процедурой sp_cursorprepare. Эта процедура вместе с sp_cursorprepare выполняет те же действия, что и sp_cursoropen, но за два этапа. Процедура sp_cursorexecute вызывается при указании ID = 4 в пакете потока табличных данных (TDS).

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

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 возвращались метаданные списка выбора курсора.

См. также

Справочник

sp_cursoropen (Transact-SQL)

sp_cursorfetch (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)