Share via


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 obtiene una fila. La función Transact-SQL CONVERT se puede utilizar para aplicar la carga de conversión de datos al servidor.

Una instancia de SQL Server puede devolver varios conjuntos de filas de resultados al ejecutar una sola instrucción. 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 programador puede enlazar columnas a tipos de datos C específicos de SQL Server mediante el valor TargetTypeSQL_C_BINARY. Las columnas enlazadas a tipos específicos de SQL Server no son portables. Los tipos de datos C de ODBC específicos de SQL Server coinciden con las definiciones de tipos de DB-Library, y los programadores de DB-Library que trasladan aplicaciones tal vez desee aprovechar esta característica.

La notificación del truncamiento de datos 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, el enlace de una columna **char (5)**SQL Server a una matriz de cinco caracteres produce el truncamiento de cada valor obtenido. 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 grandes, 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 se envía la advertencia “Datos tipo String; se truncarán por la derecha”. 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 la 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 columnas time y datetimeoffset como sus estructuras correspondientes (SQL_SS_TIME2_STRUCT y SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType se debe especificar como SQL_C_DEFAULT o SQL_C_BINARY.

Para obtener más información, vea Mejoras en los tipos de datos 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 CLR grandes definidos por el usuario (ODBC).