Comparteix a través de


SQLBindCol

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

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 TargetType SQL_C_BINARY. Las columnas enlazadas a tipos específicos de SQL Server no son portátiles. Los tipos de datos de ODBC C específicos de SQL Server definidos coinciden con las definiciones de tipo para db-Library y los desarrolladores de bibliotecas de bases de datos 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 char(5) de SQL Server 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, se devuelve SQL_SUCCESS_WITH_INFO 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 resultados de tipos de fecha y hora se convierten como se describe en Conversiones de SQL a C. Tenga en cuenta que para recuperar las 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 Tipos definidos por el usuario (ODBC) clR grandes.

Consulte también

Función SQLBindCol
Detalles de implementación de la API de ODBC