SQLBindParameter

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

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_WVARCHAR则 ColumnSize 不应大于 4000。 如果实际数据长度大于 4000,则应将 ColumnSize 设置为 SQL_SS_LENGTH_UNLIMITED以便驱动程序使用 nvarchar(max)。

SQLBindParameter 和表值参数

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

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

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

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

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

日期/时间类型的参数值将按照从 C 到 SQL 的转换中所述进行转换。 请注意,如果使用了相应的结构(SQL_SS_TIME2_STRUCT和SQL_SS_TIMESTAMPOFF标准版T_STRUCT),则类型时间和datetimeoffset 的参数必须指定为SQL_C_DEFAULTSQL_C_BINARY

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

SQLBindParameter 对大型 CLR UDT 的支持

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

另请参阅

ODBC API 实现细节
SQLBindParameter 函数