次の方法で共有


結果セット内の行の削除

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 テーブルから 1 行が削除されます。DELETE は、カーソルから現在フェッチされる 1 行だけに影響します。

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

参照

概念

DELETE の使用による行の削除
TRUNCATE TABLE の使用による全行削除
TOP の使用による削除行数の制限

その他の技術情報

DELETE (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手