sp_cursorexecute (Transact-SQL)

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

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