次の方法で共有


位置指定更新と Delete ステートメントの実行

重要

この機能は、Windows の将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 Microsoft では、ドライバーのカーソル機能を使用することをお勧めします。

アプリケーションは、 SQLFetchScroll を使用してデータ ブロックをフェッチした後、ブロック内のデータを更新または削除できます。 配置された更新または削除を実行するには、次の手順を実行します。

  1. SQLSetPos を呼び出して、更新または削除する行にカーソルを置きます。

  2. 次の構文を使用して、位置指定の更新または削除ステートメントを構築します。

    UPDATE table-name

    SET column-identifier = {expression | NULL}

    [, column-identifier = {expression | NULL}]

    WHERE CURRENT OF cursor-name

    DELETE FROM table-name WHERE CURRENT OF cursor-name

    配置された update ステートメントで SET 句を構築する最も簡単な方法は、更新する各列にパラメーター マーカーを使用し、 SQLBindParameter を使用して、更新する行の行セット バッファーにバインドすることです。 この場合、パラメーターの C データ型は、行セット バッファーの C データ型と同じになります。

  3. 位置指定された更新ステートメントを実行する場合は、現在の行の行セット バッファーを更新します。 位置指定された更新ステートメントが正常に実行されると、カーソル ライブラリは現在の行の各列の値をキャッシュにコピーします。

    注意事項

    配置された更新ステートメントを実行する前に、アプリケーションが行セット バッファーを正しく更新しないと、ステートメントの実行後にキャッシュ内のデータが正しくなくなります。

  4. カーソルに関連付けられているステートメントとは異なるステートメントを使用して、位置指定された更新または削除ステートメントを実行します。

    注意事項

    現在の行を識別するためにカーソル ライブラリによって構築された WHERE 句は、行の識別、別の行の識別、または複数の行の識別に失敗する可能性があります。 詳細については、「 検索されたステートメントの構築」を参照してください。

すべての位置指定された更新および削除ステートメントには、カーソル名が必要です。 カーソル名を指定するために、アプリケーションはカーソルを開く前に SQLSetCursorName を呼び出します。 ドライバーによって生成されたカーソル名を使用するために、アプリケーションはカーソルを開いた後 SQLGetCursorName を呼び出します。

カーソル ライブラリが位置指定の更新または削除ステートメントを実行した後、カーソル ライブラリによって保持される状態配列、行セット バッファー、およびキャッシュには、次の表に示す値が含まれます。

使用されるステートメント 行の状態配列の値 の値

rowset buffers (行セット バッファー)
の値

キャッシュ バッファー
位置指定更新を行う SQL_ROW_UPDATED 新しい値[1] 新しい値[1]
位置指定の削除 SQL_ROW_DELETED 古い値 古い値

[1] 配置された update ステートメントを実行する前に、アプリケーションで行セット バッファーの値を更新する必要があります。位置指定された update ステートメントを実行した後、カーソル ライブラリは行セット バッファー内の値をキャッシュにコピーします。