SQLBindCol

一般情况下,请考虑使用 SQLBindCol 导致数据转换的影响。 绑定转换是客户端进程,所以,举例来说,检索绑定到字符列的浮点值将导致应用程序在提取行时执行浮点到字符的转换。 Transact-SQL CONVERT 函数可用于将数据转换的成本置于服务器上。

SQL Server 实例可以在单个语句执行时返回多组结果行。 每个结果集都必须单独绑定。 有关绑定多个结果集的详细信息,请参阅 SQLMoreResults

开发人员可以使用 TargetTypeSQL_C_BINARY将列绑定到SQL Server特定的 C 数据类型。 绑定到特定于SQL Server类型的列不可移植。 定义的特定于SQL Server的 ODBC C 数据类型与 DB-Library 的类型定义匹配,DB-Library移植应用程序的开发人员可能希望利用此功能。

对于 SQL Server Native Client ODBC 驱动程序而言,报告数据截断是一个成本高昂的过程。 通过确保所有绑定数据缓冲区的宽度足以返回数据,可以避免截断。 对于字符数据,在使用字符串终止的默认驱动程序行为时,该宽度应该包括字符串终止符所占的空间。 例如,将SQL Server字符 (5) 列绑定到包含 5 个字符的数组会导致提取的每个值被截断。 将同一列绑定到六个字符的数组可以提供一个用于存储空终止符的字符元素,这样即避免了截断。 SQLGetData 可用于在不截断的情况下高效检索长字符和二进制数据。

对于大值数据类型,如果用户提供的缓冲区不够大,无法容纳列的整个值, SQL_SUCCESS_WITH_INFO 则返回并返回“字符串数据;发出右截断“警告。 StrLen_or_IndPtr 参数将包含存储在缓冲区中的字符/字节数。

SQLBindCol 对日期和时间增强功能的支持

根据 从 SQL 到 C 的转换中所述,转换日期/时间类型的结果列值。请注意,若要检索时间和 datetimeoffset 列作为其相应的结构 (SQL_SS_TIME2_STRUCTSQL_SS_TIMESTAMPOFFSET_STRUCT) ,必须将 TargetType 指定为 SQL_C_DEFAULTSQL_C_BINARY

有关详细信息,请参阅 ODBC) (日期和时间改进

SQLBindCol 对大型 CLR UDT 的支持

SQLBindCol 支持大型 CLR 用户定义类型 (UDT) 。 有关详细信息,请参阅 大型 CLR User-Defined类型 (ODBC)

另请参阅

SQLBindCol 函数
ODBC API 实现细节