sp_cursorprepare (Transact-SQL)

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

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

Синтаксис

        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 ]