Удаление строк в результирующих наборах
Поддержка ADO, OLE DB и ODBC API при удалении текущей строки, на которой располагается приложение в результирующем наборе. Приложение исполняет инструкцию, а затем производит выборку строк из результирующего набора. После того, как приложение получило строку, для удаления строки оно может использовать следующие функции или методы:
- Приложения ADO используют метод Delete объекта Recordset.
- Приложения OLE DB используют метод DeleteRows интерфейса IRowsetChange.
- Приложения ODBC используют функцию SQLSetPos с параметром SQL_DELETE.
- Приложения DB-library используют dbcursor для выполнения операции CRS_DELETE.
Сценарии, хранимые процедуры и триггеры языка Transact-SQL могут использовать предложение WHERE CURRENT OF инструкции DELETE для удаления строки курсора, на которой они в данный момент расположены. Следующий пример удаляет одну строку из таблицы EmployeePayHistory
с помощью курсора под названием complex
_cursor
. Инструкция DELETE
затрагивает только одну строку таблицы, полученную от курсора.
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;
DELETE FROM HumanResources.EmployeePayHistory
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO
См. также
Основные понятия
Удаление строк с помощью инструкции DELETE
Удаление всех строк с помощью инструкции TRUNCATE TABLE
Ограничение удаляемых строк с помощью предложения TOP