SQLBindCol
Por regla general, considere las implicaciones del uso de SQLBindCol para realizar la conversión de datos. Las conversiones de enlaces son procesos de cliente, por lo que al recuperar, por ejemplo, un valor de punto flotante enlazado a una columna de carácter, el controlador realiza la conversión de punto flotante en carácter localmente cuando se captura una fila. La función CONVERT de Transact-SQL se puede usar para colocar el costo de la conversión de datos en el servidor.
Una instancia de SQL Server puede devolver varios conjuntos de filas de resultados en una sola ejecución de instrucciones. Cada conjunto de resultados se debe enlazar por separado. Para obtener más información sobre cómo enlazar varios conjuntos de resultados, vea SQLMoreResults.
El desarrollador puede enlazar columnas a tipos de datos de C específicos de SQL Server mediante el valor SQL_C_BINARY
TargetType . Las columnas enlazadas a tipos específicos de SQL Server no son portátiles. Los tipos de datos odbc C específicos del SQL Server definidos coinciden con las definiciones de tipo de la biblioteca de bases de datos y DB-Library los desarrolladores que portan aplicaciones pueden querer aprovechar esta característica.
El truncamiento de datos de informes es un proceso costoso para el controlador ODBC de SQL Server Native Client. Puede evitar el truncamiento asegurándose de que los búferes de datos enlazados son lo suficientemente grandes como para devolver datos. Para los datos de carácter, el ancho debe incluir el espacio de un terminador de cadena cuando se utiliza el comportamiento del controlador predeterminado para la finalización de las cadenas. Por ejemplo, enlazar una columna de SQL Server char(5) a una matriz de cinco caracteres da como resultado el truncamiento de cada valor capturado. Si la misma columna se enlaza a una matriz de seis caracteres, se evita el truncamiento al proporcionar un elemento de cadena en el que se almacena el terminador nulo. SQLGetData se puede utilizar para recuperar de forma eficaz datos binarios y de carácter grandes sin truncamiento.
Para los tipos de datos de valor grande, si el búfer proporcionado por el usuario no es lo suficientemente grande como para contener el valor completo de la columna, SQL_SUCCESS_WITH_INFO
se devuelve y los "datos de cadena; se emite la advertencia de truncamiento derecho. El argumento StrLen_or_IndPtr
contendrá el número de caracteres/bytes almacenados en el búfer.
SQLBindCol admite las características mejoradas de fecha y hora
Los valores de columna de resultado de los tipos de fecha y hora se convierten como se describe en Conversiones de SQL a C. Tenga en cuenta que para recuperar columnas time y datetimeoffset como sus estructuras correspondientes (SQL_SS_TIME2_STRUCT
y SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType debe especificarse como SQL_C_DEFAULT
o SQL_C_BINARY
.
Para obtener más información, vea Mejoras de fecha y hora (ODBC).
Compatibilidad de SQLBindCol con tipos definidos por el usuario de CLR de gran tamaño
SQLBindCol admite tipos definidos por el usuario (UDT) de CLR de gran tamaño. Para obtener más información, vea Large CLR User-Defined Types (ODBC).