Partager via


Suppression de lignes dans des ensembles de résultats

Les API ADO, OLE DB et ODBC prennent en charge la suppression de la ligne sur laquelle l'application est positionnée dans un ensemble de résultats. L'application exécute une instruction, puis extrait des lignes de l'ensemble de résultats. Une fois qu'elle a extrait une ligne, une application peut utiliser les fonctions ou les méthodes suivantes pour supprimer cette ligne :

  • Les applications ADO font appel à la méthode Delete de l'objet Recordset.

  • Les applications OLE DB font appel à la méthode DeleteRows de l'interface IRowsetChange.

  • Les applications ODBC font appel à la fonction SQLSetPos avec l'option SQL_DELETE.

  • Les applications DB-library font appel à la méthode dbcursor pour effectuer une opération CRS_DELETE.

Les scripts, les procédures stockées et les déclencheurs Transact-SQL peuvent utiliser la clause WHERE CURRENT OF dans une instruction DELETE pour supprimer la ligne de curseur sur laquelle ils sont actuellement positionnés. L'exemple suivant supprime une ligne de la table EmployeePayHistory à l'aide d'un curseur appelé complex_cursor. DELETE affecte uniquement la ligne actuelle extraite du curseur.

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