Uso de tipos de datos

El controlador ODBC de SQL Server Native Client y SQL Server imponen el siguiente uso de los tipos de datos.

Tipo de datos

Limitación

Literales de fecha

Los literales de fecha, cuando se almacenan en una columna SQL_TYPE_TIMESTAMP (tipos de datos de SQL Serverdatetime o smalldatetime), tienen un valor de hora de 12:00:00.000 A.M.

money y smallmoney

Sólo las partes enteras de los tipos de datos money y smallmoney son significativas. Si la parte decimal de los datos money de SQL se trunca durante la conversión de tipos de datos, el controlador ODBC de SQL Server Native Client devuelve una advertencia, no un error.

SQL_BINARY (acepta valores NULL)

Cuando se conecta a una instancia de SQL Server versión 6.0 y anteriores, si una columna SQL_BINARY admite valores NULL, los datos que se almacenan en el origen de datos no se rellenan con ceros. Cuando se recuperan datos de este tipo de columna, el controlador ODBC de SQL Server Native Client los rellena con ceros a la derecha. Sin embargo, en los datos que se crean en operaciones realizadas por SQL Server, como la concatenación, no se realiza este relleno.

Además, cuando los datos se colocan en este tipo de columna en una instancia de SQL Server 6.0 o versiones anteriores, SQL Server trunca los datos a la derecha si son demasiado largos para ajustarse a la columna.

NotaNota
El controlador ODBC de SQL Server Native Client permite conectar a SQL Server 6.5 y versiones anteriores.

SQL_CHAR (truncamiento)

Cuando se conecta a una instancia de SQL Server 6.0 y versiones anteriores, si los datos se colocan en una columna SQL_CHAR y son demasiado largos para ajustarse en la columna, SQL Server los trunca a la derecha sin ninguna advertencia.

NotaNota
El controlador ODBC de SQL Server Native Client permite conectar a SQL Server 6.5 y versiones anteriores.

SQL_CHAR (acepta valores NULL)

Cuando se conecta a una instancia de SQL Server 6.0 y versiones anteriores, si una columna SQL_CHAR admite valores NULL, los datos almacenados en el origen de datos no se rellenan con espacios en blanco. Cuando se recuperan datos de este tipo de columna, el controlador ODBC de SQL Server Native Client los rellena con espacios en blanco a la derecha. Sin embargo, en los datos que se crean en operaciones realizadas por SQL Server, como la concatenación, no se realiza este relleno.

NotaNota
El controlador ODBC de SQL Server Native Client permite conectar a SQL Server 6.5 y versiones anteriores.

SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_WLONGVARCHAR

Las actualizaciones de columnas con tipos de datos SQL_LONGVARBINARY, SQL_LONGVARCHAR o SQL_WLONGVARCHAR (con una cláusula WHERE) que afectan a varias filas son totalmente compatibles cuando se conecta a una instancia de SQL Server 6.x y versiones posteriores. Cuando se conecta a una instancia de SQL Server 4.2x, se devuelve un error S1000, "Inserción/actualización parcial. No se realizó correctamente la inserción o actualización de columnas de texto o de imagen" si la actualización afecta a más de una fila.

NotaNota
El controlador ODBC de SQL Server Native Client permite conectar a SQL Server 6.5 y versiones anteriores.

Parámetros de función de cadena

Los parámetros string_exp de las funciones de cadena deben ser de tipo SQL_CHAR o SQL_VARCHAR. Los tipos de datos SQL_LONG_VARCHAR no se admiten en las funciones de cadena. El parámetro count debe ser menor o igual que 8.000 porque los tipos de datos SQL_VARCHAR y SQL_CHAR están limitados a una longitud máxima de 8.000 caracteres.

Literales de hora

Los literales de hora, cuando se almacenan en una columna SQL_TIMESTAMP (tipos de datos de SQL Serverdatetime o smalldatetime), tienen un valor de fecha de 1 de enero de 1900.

timestamp

En una columna timestamp sólo se puede insertar manualmente un valor NULL. Sin embargo, dado que SQL Server actualiza las columnas timestamp automáticamente las columnas, los valores NULL se sobrescriben.

tinyint

El tipo de datos tinyint de SQL Server no tiene signo. Las columnas tinyint se enlazan de forma predeterminada a una variable del tipo de datos SQL_C_UTINYINT.

Tipos de datos de alias

Cuando se conecta a una instancia de SQL Server 4.2x, el controlador ODBC agrega NULL a una definición de columna que no declara explícitamente la nulabilidad de una columna. Por tanto, la nulabilidad almacenada en la definición de un tipo de datos de alias se pasa por alto.

Cuando se conecta a una instancia de SQL Server 4.2x, las columnas con un tipo de datos de alias con un tipo de datos base char o binary y para los que no se declara la nulabilidad se crean como tipo de datos varchar o varbinary. SQLColAttribute, SQLColumns y SQLDescribeCol devuelven SQL_VARCHAR o SQL_VARBINARY como tipo de datos de estas columnas. Los datos que se recuperan de estas columnas no se rellenan.

NotaNota
El controlador ODBC de SQL Server Native Client permite conectar a SQL Server 6.5 y versiones anteriores.

Tipos de datos LONG

Los parámetros de datos en ejecución están restringidos a los tipos de datos SQL_LONGVARBINARY y SQL_LONGVARCHAR.

Tipos de valores grandes

El controlador ODBC de SQL Server Native Client expondrá los tipos varchar(max), varbinary(max) y nvarchar(max) como SQL_VARCHAR, SQL_VARBINARY y SQL_WVARCHAR (respectivamente) en las API que aceptan o devuelven tipos de datos ODBC SQL.

Tipo definido por el usuario (UDT)

Las columnas UDT se asignan como SQL_SS_UDT. Si una columna UDT se asigna explícitamente a otro tipo en la instrucción SQL utilizando los métodos ToXMLString () o ToString () del UDT o a través de funciones CAST/CONVERT, el tipo de la columna en el conjunto de resultados reflejará el tipo real en el que se convirtió la columna.

El controlador ODBC de SQL Server Native Client sólo puede enlazar a una columna UDT como binario. SQL Server sólo admite la conversión entre los tipos de datos SQL_C_BINARY y SQL_SS_UDT.

XML

SQL Server convertirán automáticamente XML a texto Unicode. El tipo XML se asigna como SQL_SS_XML.

Vea también

Conceptos