Share via


Eliminazione di righe dai set di risultati

Le API ADO, OLE DB e ODBC supportano l'eliminazione della riga corrente su cui l'applicazione è posizionata in un set di risultati. L'applicazione esegue un'istruzione, quindi recupera le righe corrispondenti dal set di risultati. Dopo il recupero di una riga, è possibile eliminarla utilizzando le funzioni o i metodi seguenti:

  • Il metodo Delete dell'oggetto Recordset in applicazioni ADO.

  • Il metodo DeleteRows dell'interfaccia IRowsetChange in applicazioni OLE DB.

  • La funzione SQLSetPos con l'opzione SQL_DELETE in applicazioni ODBC.

  • La funzione dbcursor per l'esecuzione di un'operazione CRS_DELETE in applicazioni DB-library.

Gli script, le stored procedure e i trigger Transact-SQL possono utilizzare la clausola WHERE CURRENT OF in un'istruzione DELETE per eliminare la riga del cursore in cui sono posizionati. Nell'esempio seguente viene eliminata una singola riga dalla tabella EmployeePayHistory utilizzando un cursore denominato complex_cursor. L'istruzione DELETE ha effetto solo sulla riga corrente recuperata dal cursore.

USE AdventureWorks2008R2;
GO
DECLARE complex_cursor CURSOR FOR
    SELECT a.BusinessEntityID
    FROM HumanResources.EmployeePayHistory AS a
    WHERE RateChangeDate <> 
         (SELECT MAX(RateChangeDate)
          FROM HumanResources.EmployeePayHistory AS b
          WHERE a.BusinessEntityID = b.BusinessEntityID) ;
OPEN complex_cursor;
FETCH FROM complex_cursor;
DELETE FROM HumanResources.EmployeePayHistory
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO