次の方法で共有


SQLSetPos (カーソル ライブラリ)

重要

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

このトピックでは、カーソル ライブラリでの SQLSetPos 関数の使用について説明します。 SQLSetPos の一般的な情報については、「SQLSetPos 関数」を参照してください。

カーソル ライブラリは、SQLSetPos の Operation 引数に対してのみSQL_POSITION操作をサポートします。 LockType 引数に対してのみSQL_LOCK_NO_CHANGE値がサポートされます。

ドライバーが一括操作をサポートしていない場合、RowNumber が 0 に等しい SQLSetPos が呼び出されると、カーソル ライブラリは SQLSTATE HYC00 (ドライバーに対応していません) を返します。 このドライバーの動作は推奨されません。

カーソル ライブラリは、 SQLSetPos の呼び出しでのSQL_UPDATEおよびSQL_DELETE操作をサポートしていません。 カーソル ライブラリは、連結列ごとにキャッシュに格納されている値を列挙する WHERE 句を使用して検索された更新または削除ステートメントを作成することで、位置指定された更新または削除 SQL ステートメントを実装します。 詳細については、「 位置指定された更新ステートメントと Delete ステートメントの処理」を参照してください

ドライバーが静的カーソルをサポートしていない場合、カーソル ライブラリを使用するアプリケーションは、SQLFetch ではなく、SQLExtendedFetch または SQLFetchScroll によってフェッチされた行セットでのみ SQLSetPos を呼び出す必要があります。 カーソル ライブラリは、 SQLExtendedFetchSQLFetchScroll を実装します。ドライバーで SQLFetch を繰り返し呼び出します (行セット サイズは 1)。 カーソル ライブラリは、 SQLFetch への呼び出しをドライバーに渡します。 ドライバーが静的カーソルをサポートしていないときに SQLFetch によってフェッチされた複数行セットで SQLSetPos が呼び出された場合、SQLSetPos は順方向専用カーソルでは機能しないため、呼び出しは失敗します。 これは、アプリケーションが SQLSetStmtAttr を正常に呼び出してSQL_ATTR_CURSOR_TYPEを SQL_CURSOR_STATIC に設定した場合でも発生します。これは、ドライバーが静的カーソルをサポートしていない場合でもカーソル ライブラリでサポートされます。