Löschen von Zeilen in Resultsets
Die ADO-, OLE DB- und ODBC-APIs (Application Programming Interfaces, Schnittstellen für Anwendungsprogrammierung) unterstützen das Löschen der aktuellen Zeile, in der eine Anwendung in einem Resultset positioniert ist. Die Anwendung führt eine Anweisung aus und ruft dann Zeilen aus dem Resultset ab. Nachdem eine Anwendung die Zeile abgerufen hat, kann sie die Zeile mithilfe der folgenden Funktionen oder Methoden löschen:
- ADO-Anwendungen verwenden die Delete-Methode des Recordset-Objekts.
- OLE DB-Anwendungen verwenden die DeleteRows-Methode der IRowsetChange-Schnittstelle.
- ODBC-Anwendungen verwenden die SQLSetPos-Funktion mit der Option SQL_DELETE.
- DB-Library-Anwendungen verwenden dbcursor zur Durchführung eines CRS_DELETE-Vorgangs.
Transact-SQL-Skripts, gespeicherte Prozeduren und Trigger können die WHERE CURRENT OF-Klausel in einer DELETE-Anweisung zum Löschen der Cursorzeile verwenden, auf der sie jeweils positioniert sind. Das folgende Beispiel löscht eine einzelne Zeile aus der EmployeePayHistory
-Tabelle und verwendet dabei einen Cursor namens complex
_cursor
. DELETE
wirkt sich nur auf die eine Zeile aus, die aktuell vom Cursor abgerufen wird.
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
Siehe auch
Konzepte
Löschen von Zeilen mithilfe von DELETE
Löschen aller Zeilen mit TRUNCATE TABLE
Beschränken von zu löschenden Zeilen mithilfe von TOP