Изменение данных при помощи курсора
Интерфейсы ADO, OLE DB и ODBC поддерживают обновление текущей строки, на которой приложение позиционировано в результирующем наборе. Следующие шаги описывают общий процесс:
Произведите привязку столбцов результирующего набора к переменным программы.
Выполните запрос.
Вызовите функции или методы API для позиционирования приложения на строке в результирующем наборе.
Заполните привязанные программные переменные новыми значениями данных для всех обновляемых столбцов.
Вызовите одну из этих функций или методов для вставки строки:
В 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
Дополнительные сведения о соединениях см. в разделе Основные принципы соединения.
См. также