結果の取得 (詳細)
アプリケーションでは、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 つのオフセット値を変更することで、すべてのバインディング データを変更できます。 アプリケーションでは、カーソルが閉じられるまでポインターが有効なままであることを確認する必要があります。
Note
バインディング オフセットは ODBC 2.x ドライバーではサポートされていません。
このセクションでは、次のトピックを扱います。