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