Изменение данных при помощи курсора
Интерфейсы 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
Дополнительные сведения о соединениях см. в разделе Основные принципы соединения.
См. также
Основные понятия
Изменение данных с помощью инструкции UPDATE
Изменение данных в формате ntext, text или image