SQLBindParameter
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)
SQLBindParameter 可以在用于为 SQL Server Native Client ODBC 驱动程序提供数据时消除数据转换的负担,从而显著提高应用程序的客户端和服务器组件的性能。 其他好处包括在插入或更新近似数字数据类型时减少精度损失。
注意
在 图像列中插入 char 和 wchar 类型数据时,将使用传入的数据的大小,而不是转换为二进制格式后的数据大小。
如果 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_TIMESTAMPOFFSET_STRUCT),则类型时间和 datetimeoffset 的参数必须指定为 SQL_C_DEFAULT 或 SQL_C_BINARY。
有关详细信息,请参阅日期和时间改进(ODBC)。
SQLBindParameter 对大型 CLR UDT 的支持
SQLBindParameter 支持大型 CLR 用户定义类型(UDT)。 有关详细信息,请参阅大型 CLR 用户定义的类型(ODBC)。