延迟缓冲区是在函数调用中指定后,稍后才会使用其值。 例如,使用 SQLBindParameter 将数据缓冲区与 SQL 语句中的参数相关联或 绑定 。 指定参数的数目,并传递缓冲区的地址、字节长度和类型。 驱动程序保存此信息,但不检查缓冲区的内容。 稍后,执行语句时,驱动程序将检索信息,并使用它检索参数数据并将其发送到数据源。 因此,会延迟在缓冲区中输入数据。 由于延迟缓冲区在一个函数中指定并在另一个函数中使用,因此如果在驱动程序仍然需要该缓冲区时释放它,这就是应用程序编程错误。 有关详细信息,请参阅本节后面的 分配和释放缓冲区。
延迟的缓冲区类型
输入和输出缓冲区都可以延迟。 下表总结了延迟缓冲区的使用。 请注意,绑定到结果集列的延迟缓冲区是使用 SQLBindCol 指定的,绑定到 SQL 语句参数的延迟缓冲区是使用 SQLBindParameter 指定的。
| 缓冲区的使用 | 类型 | 指定函数 | 使用者 |
|---|---|---|---|
| 发送输入参数的数据 | 延迟输入 | SQLBindParameter | SQLExecute SQLExecDirect |
| 发送数据以在结果集中更新或插入行 | 延迟输入 | SQLBindCol |
SQLSetPos SQLBulkOperations |
| 返回输出和输入/输出参数的数据 | 延迟输出 | SQLBindParameter | SQLExecute SQLExecDirect |
| 返回结果集数据 | 延迟输出 | SQLBindCol | SQLFetch SQLFetchScroll SQLSetPos |