カーソルの使用によるデータの変更
ADO、OLE DB、および ODBC の各 API では、結果セット内でアプリケーションが位置付けられた現在の行の更新がサポートされます。次の手順は、基本的なプロセスを示しています。
- プログラム変数に結果セットの列をバインドします。
- クエリを実行します。
- 結果セット内の行にアプリケーションを位置付けるために API 関数またはメソッドを呼び出します。
- バインドしたプログラム変数に、更新する列の新しいデータ値を設定します。
- 次の関数またはメソッドのいずれかを呼び出して、行を挿入します。
- ADO の場合は、Recordset オブジェクトの Update メソッドを呼び出します。
- OLE DB の場合は、IRowsetChange インターフェイスの SetData メソッドを呼び出します。
- ODBC の場合は、SQL_UPDATE オプションを指定して SQLSetPos 関数を呼び出します。
Transact-SQL サーバー カーソルを使用する際には、WHERE CURRENT OF 句を含んだ UPDATE ステートメントを使用して、現在の行を更新できます。この句を使用して行われる変更は、カーソルが位置付けられた行にしか適用されません。テーブルを結合して作成されたカーソルの場合は、UPDATE ステートメントで指定した table_name のテーブルのみが変更されます。この場合、カーソルに関連する他のテーブルには影響ありません。
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;
UPDATE HumanResources.EmployeePayHistory
SET PayFrequency = 2
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO
結合の詳細については、「結合の基礎」を参照してください。
参照
概念
UPDATE の使用によるデータの変更
ntext 型、text 型、または image 型の各データの変更