SQLBindParameter
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中所述进行转换。请注意,如果使用 time 和 datetimeoffset 类型的参数的相应结构(SQL_SS_TIME2_STRUCT 和SQL_SS_TIMESTAMPOFFSET_STRUCT),则必须将其 ValueType 指定为 SQL_C_DEFAULT 或 SQL_C_BINARY。
有关详细信息,请参阅 日期/时间的改进 (ODBC)。
SQLBindParameter 对大型 CLR UDT 的支持
SQLBindParameter 支持大型 CLR 用户定义类型 (UDT)。有关详细信息,请参阅大型 CLR 用户定义类型 (ODBC)。