遅延バッファー
遅延バッファーは、関数呼び出しで指定された後、ある時点で値が使用されるバッファーです。 たとえば、SQLBindParameter は、データ バッファーを SQL ステートメント内のパラメーターに関連付ける (バインドする) 場合に使用します。 アプリケーションはパラメーターの数を指定し、バッファーのアドレス、バイト長、および型を渡します。 ドライバーは、この情報を保存しますが、バッファーの内容を調べません。 後でアプリケーションがステートメントを実行すると、ドライバーは情報を取得し、それを使用してパラメーター データを取得し、データ ソースに送信します。 そのため、バッファー内のデータの入力は遅延されます。 遅延バッファーは 1 つの関数で指定され、別の関数で使用されるため、遅延バッファーを解放するのはアプリケーション プログラミング エラーであり、ドライバーは遅延バッファーが存在することを想定しています。詳細については、このセクションで後述する「バッファーの割り当てと解放」を参照してください。
入力バッファーと出力バッファーの両方を遅延させることができます。 次の表は、遅延バッファーの使用方法をまとめたものです。 結果セット列にバインドされた遅延バッファーは SQLBindCol で指定され、SQL ステートメント パラメーターにバインドされた遅延バッファーは SQLBindParameter で指定されることに注意してください。
バッファーの使用 | Type | 指定 | 使用者 |
---|---|---|---|
入力パラメーターのデータの送信 | 遅延入力 | SQLBindParameter | SQLExecute SQLExecDirect |
結果セットに行を更新または挿入するためのデータの送信 | 遅延入力 | SQLBindCol | SQLSetPos |
出力パラメーターと入力/出力パラメーターのデータを返す | 遅延出力 | SQLBindParameter | SQLExecute SQLExecDirect |
結果セット データの返し | 遅延出力 | SQLBindCol | SQLFetch SQLFetchScroll SQLSetPos |