다음을 통해 공유


결과 집합의 행 삭제

ADO, OLE DB, ODBC API는 결과 집합에서 응용 프로그램이 위치한 현재 행의 삭제를 지원합니다. 응용 프로그램은 문을 실행한 다음 결과 집합에서 행을 인출합니다. 응용 프로그램이 행을 인출하고 나면 다음과 같은 함수나 메서드를 사용하여 행을 삭제할 수 있습니다.

  • ADO 응용 프로그램은 Recordset 개체의 Delete 메서드를 사용합니다.

  • OLE DB 응용 프로그램은 IRowsetChange 인터페이스의 DeleteRows 메서드를 사용합니다.

  • ODBC 응용 프로그램은 SQL_DELETE 옵션과 함께 SQLSetPos 함수를 사용합니다.

  • DB-library 응용 프로그램은 dbcursor를 사용하여 CRS_DELETE 작업을 수행합니다.

Transact-SQL 스크립트, 저장 프로시저 및 트리거는 DELETE 문에서 WHERE CURRENT OF 절을 사용하여 현재 위치한 커서 행을 삭제할 수 있습니다. 다음 예는 complex_cursor라는 커서를 사용하여 EmployeePayHistory 테이블에서 한 개의 행을 삭제합니다. DELETE는 커서에서 현재 인출된 행에만 영향을 줍니다.

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