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


Выполнение инструкций позиционированного обновления и удаления

Внимание

Эта функция будет удалена в будущей версии Windows. Избегайте использования этой функции в новых рабочих областях разработки и планируете изменять приложения, которые в настоящее время используют эту функцию. Корпорация Майкрософт рекомендует использовать функции курсора драйвера.

После получения блоком данных с помощью SQLFetchScroll приложение может обновить или удалить данные в блоке. Чтобы выполнить размещенное обновление или удаление, приложение:

  1. Вызывает SQLSetPos для размещения курсора в строке для обновления или удаления.

  2. Создает позиционированную инструкцию обновления или удаления с помощью следующего синтаксиса:

    UPDATEtable-name

    SETcolumn-identifier= {expression | NULL}

    [,column-identifier= {expression | NULL}]

    WHERE CURRENT OFCURSOR-name

    DELETE FROMtable-nameWHERE CURRENT OFcursor-name

    Самый простой способ создать предложение SET в позиционированном операторе обновления — использовать маркеры параметров для каждого столбца для обновления и использовать SQLBindParameter для привязки этих значений к буферам набора строк для обновления строки. В этом случае тип данных C параметра будет совпадать с типом данных C буфера набора строк.

  3. Обновляет буферы набора строк для текущей строки, если она выполнит позиционированную инструкцию обновления. После успешного выполнения оператора обновления с позицией курсора библиотека курсоров копирует значения из каждого столбца в текущей строке в свой кэш.

    Внимание

    Если приложение некорректно обновляет буферы набора строк перед выполнением позиционированного оператора обновления, данные в кэше будут неправильными после выполнения инструкции.

  4. Выполняет позиционированную инструкцию обновления или удаления с помощью инструкции, отличной от инструкции, связанной с курсором.

    Внимание

    Предложение WHERE , созданное библиотекой курсоров для идентификации текущей строки, может не идентифицировать строки, определить другую строку или определить несколько строк. Дополнительные сведения см. в разделе "Создание инструкций поиска".

Для всех размещенных инструкций обновления и удаления требуется имя курсора. Чтобы указать имя курсора, приложение вызывает SQLSetCursorName перед открытием курсора. Чтобы использовать имя курсора, созданное драйвером, приложение вызывает SQLGetCursorName после открытия курсора.

Когда библиотека курсоров выполняет позиционированную инструкцию обновления или удаления, массив состояния, буферы набора строк и кэш, поддерживаемые библиотекой курсоров, содержат значения, показанные в следующей таблице.

Оператор, используемый Значение в массиве состояния строки Значения в

Буферы набора строк
Значения в

буферы кэша
Позиционированное обновление SQL_ROW_UPDATED Новые значения[1] Новые значения[1]
Размещенное удаление SQL_ROW_DELETED Прежние значения Прежние значения

[1] Приложение должно обновить значения в буферах набора строк, прежде чем выполнять позиционированную инструкцию обновления; После выполнения инструкции размещенного обновления библиотека курсоров копирует значения в буферы набора строк в кэш.