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


Удаление строк в результирующих наборах

Поддержка 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

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

DELETE (Transact-SQL)

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

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