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 和 Table-Valued 参数
与其他参数类型一样,表值参数由 SQLBindParameter 绑定。
绑定表值参数后,其列也会绑定。 若要绑定列,请调用 SQLSetStmtAttr 将SQL_SOPT_SS_PARAM_FOCUS设置为表值参数的序号。 然后,为表值参数中的每个列调用 SQLBindParameter。 若要返回到顶级参数绑定,请将SQL_SOPT_SS_PARAM_FOCUS设置为 0。
有关将参数映射到表值参数的描述符字段的信息,请参阅 Table-Valued 参数和列值的绑定和数据传输。
有关表值参数的详细信息,请参阅表值参数(ODBC)。
SQLBindParameter 对增强的日期和时间功能的支持
日期/时间类型的参数值将按照从 C 到 SQL 的转换中所述进行转换。 请注意,类型time
参数必须datetimeoffset
指定为SQL_C_DEFAULT
或SQL_C_BINARY
是否使用了相应的结构(SQL_SS_TIME2_STRUCT
和SQL_SS_TIMESTAMPOFFSET_STRUCT
)。
有关详细信息,请参阅日期和时间改进(ODBC)。
对大型 CLR UDT 的 SQLBindParameter 支持
SQLBindParameter
支持大型 CLR 用户定义的类型(UDT)。 有关详细信息,请参阅大型 CLR 用户定义的类型(ODBC)。