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


Изменение данных при помощи курсора

Интерфейсы ADO, OLE DB и ODBC поддерживают обновление текущей строки, на которой приложение позиционировано в результирующем наборе. Следующие шаги описывают общий процесс:

  1. Произведите привязку столбцов результирующего набора к переменным программы.
  2. Выполните запрос.
  3. Вызовите функции или методы API для позиционирования приложения на строке в результирующем наборе.
  4. Заполните привязанные программные переменные новыми значениями данных для всех обновляемых столбцов.
  5. Вызовите одну из этих функций или методов для вставки строки:
    • В ADO вызовите метод Update объекта Recordset.
    • В OLE DB вызовите метод SetData интерфейса IRowsetChange.
    • В ODBC вызовите функцию SQLSetPos с параметром SQL_UPDATE.

При использовании серверного курсора Transact-SQL можно обновить текущую строку с помощью инструкции UPDATE, включающей предложение WHERE CURRENT OF. Изменения, произведенные с использованием этого предложения, влияют только на строку, в которой позиционирован курсор. Если курсор основан на соединении, изменяется только таблица table_name, указанная в инструкции UPDATE. Другие таблицы, участвующие в курсоре, не затрагиваются.

USE AdventureWorks;
GO
DECLARE complex_cursor CURSOR FOR
    SELECT a.EmployeeID
    FROM HumanResources.EmployeePayHistory AS a
    WHERE RateChangeDate <> 
         (SELECT MAX(RateChangeDate)
          FROM HumanResources.EmployeePayHistory AS b
          WHERE a.EmployeeID = b.EmployeeID) ;
OPEN complex_cursor;
FETCH FROM complex_cursor;
UPDATE HumanResources.EmployeePayHistory
SET PayFrequency = 2 
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO

Дополнительные сведения о соединениях см. в разделе Основные принципы соединения.

См. также

Основные понятия

Изменение данных с помощью инструкции UPDATE
Изменение данных в формате ntext, text или image

Другие ресурсы

UPDATE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005