SQLBindParameter

SQLBindParameter当用于为 SQL Server Native Client ODBC 驱动程序提供数据时,可以消除数据转换的负担,从而显著提升应用程序的客户端和服务器组件的性能。 其他好处包括在插入或更新近似数字数据类型时减少精度损失。

注意

在将 charwchar 类型数据插入某一图像列时,将使用要传入的数据的大小,而非转换为二进制格式后的数据大小。

如果SQL Server Native Client ODBC 驱动程序在参数数组的单个数组元素上遇到错误,驱动程序将继续对其余数组元素执行 语句。 如果该应用程序为语句绑定了某一由参数状态元素构成的数组,则可以从该数组确定生成错误的参数行。

使用 SQL Server Native Client ODBC 驱动程序时,请在绑定输入参数时指定SQL_PARAM_INPUT。 在绑定用 OUTPUT 关键字定义的存储过程参数时,只指定 SQL_PARAM_OUTPUT 或 SQL_PARAM_INPUT_OUTPUT。

如果绑定参数数组的数组元素导致语句执行错误,SQLRowCount 与 SQL Server Native Client ODBC 驱动程序不可靠。 ODBC 语句属性 SQL_ATTR_PARAMS_PROCESSED_PTR 报告在发生错误前已处理的行数。 然后,如有必要,该应用程序将遍历其参数状态数组,以便发现成功执行的语句数目。

SQL 字符类型的绑定参数

如果传入的 SQL 数据类型是字符类型, 则 ColumnSize 以字符 (而不是字节) 的大小。 如果数据字符串的长度(以字节为单位)大于 8000,则 ColumnSize 应设置为 SQL_SS_LENGTH_UNLIMITED,指示 SQL 类型的大小没有限制。

例如,如果 SQL 数据类型为 SQL_WVARCHARColumnSize 不应大于 4000。 如果实际数据长度大于 4000,则 ColumnSize 应设置为 SQL_SS_LENGTH_UNLIMITEDnvarchar(max) 以便驱动程序使用该长度。

SQLBindParameter 和表值参数

与其他参数类型一样,表值参数由 SQLBindParameter 绑定。

在已绑定某一表值参数后,也绑定其列。 若要绑定列,请调用 SQLSetStmtAttr 将SQL_SOPT_SS_PARAM_FOCUS设置为表值参数的序号。 然后,为表值参数中的每个列调用 SQLBindParameter。 若要返回到顶级参数绑定,请将 SQL_SOPT_SS_PARAM_FOCUS 设置为 0。

有关将参数映射到表值参数的描述符字段的信息,请参阅 Table-Valued参数和列值的绑定和数据传输

有关表值参数的详细信息,请参阅 表值参数 (ODBC)

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

根据 从 C 到 SQL 的转换中所述,转换日期/时间类型的参数值。 请注意,如果使用和 类型的timedatetimeoffset参数的相应结构 (SQL_SS_TIME2_STRUCTSQL_SS_TIMESTAMPOFFSET_STRUCT) ,则必须将 ValueType 指定为 SQL_C_DEFAULTSQL_C_BINARY

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

SQLBindParameter 对大型 CLR UDT 的支持

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

另请参阅

ODBC API 实现细节
SQLBindParameter 函数