アプリケーションは、SQLBulkOperations、SQLFetch、SQLFetchScroll、または SQLSetPos が呼び出されたときに、バインドされたデータ バッファー アドレスと対応する長さ/インジケーター バッファー アドレスにオフセットを追加することを指定できます。 これらの追加の結果によって、これらの操作で使用されるアドレスが決まります。
バインド オフセットを使用すると、以前にバインドされた列に 対して SQLBindCol を 呼び出さずに、アプリケーションでバインドを変更できます。 SQLBindCol を呼び出してデータを再バインドすると、バッファー アドレスと長さ/インジケーター ポインターが変更されます。 一方、オフセットを使用して再バインドすると、既存のバインドされたデータ バッファー アドレスと長さ/インジケーター バッファー アドレスにオフセットが追加されます。 オフセットを使用する場合、バインドはアプリケーション バッファーのレイアウト方法の "テンプレート" であり、アプリケーションはオフセットを変更することで、この "テンプレート" をメモリのさまざまな領域に移動できます。 新しいオフセットはいつでも指定でき、常に最初にバインドされた値に追加されます。
バインド オフセットを指定するために、アプリケーションは sqlINTEGER バッファーのアドレスにSQL_ATTR_ROW_BIND_OFFSET_PTRステートメント属性を設定します。 アプリケーションは、SQLBulkOperations、SQLFetch、SQLFetchScroll、SQLSetPos などのバインディングを使用する関数を呼び出す前に、データ バッファー アドレスも長さ/インジケーター バッファー アドレスも 0 でなく、バインドされた列が結果セット内にある限り、このバッファーにオフセットをバイト単位で配置します。 アドレスとオフセットの合計は、有効なアドレスである必要があります。 (これは、オフセットの合計が有効なアドレスである限り、オフセットとオフセットが追加されるアドレスのいずれかまたは両方が無効である可能性があることを意味します)。SQL_ATTR_ROW_BIND_OFFSET_PTR ステートメント属性はポインターであり、オフセット値を複数のバインディング データ セットに適用できます。そのすべてが、1 つのオフセット値を変更することで変更できます。 アプリケーションは、カーソルが閉じられるまでポインターが有効なままであることを確認する必要があります。
注
バインディング オフセットは ODBC 2 ではサポートされていません。x ドライバー。
このセクションでは、次のトピックを扱います。