Excluindo linhas em conjuntos de resultados
ADO, OLE DB e ODBC APIs oferecem suporte à exclusão da linha atual em que um aplicativo está posicionado em um conjunto de resultados. O aplicativo executa uma instrução e busca linhas do conjunto de resultados. Depois que um aplicativo tiver buscado a linha, pode-se utilizar as seguintes funções ou métodos para excluir a linha:
Aplicativos ADO utilizam o método Delete do objeto Recordset.
Aplicativos OLE DB utilizam o método DeleteRows da interface IRowsetChange.
Aplicativos ODBC utilizam a função SQLSetPos com a opção SQL_DELETE.
Aplicativos DB-Library utilizam dbcursor para executar uma operação CRS_DELETE.
Scripts Transact-SQL, procedimentos armazenados e gatilhos podem utilizar a cláusula WHERE CURRENT OF em uma instrução DELETE para excluir a linha do cursor em que está posicionado atualmente. O exemplo a seguir exclui uma única linha da tabela EmployeePayHistory utilizando um cursor chamado complex_cursor. DELETE que afeta somente a única linha atualmente buscada do cursor.
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
Consulte também