Utilisation des types de données
Le pilote ODBC SQL Server Native Client et SQL Server imposent l'utilisation suivante des types de données.
Type de données |
Limite |
---|---|
Littéraux de date |
Lorsque des littéraux de date sont stockés dans une colonne SQL_TYPE_TIMESTAMP (types de données SQL Serverdatetime ou smalldatetime), leur valeur d'heure est de 12:00:00.000 du matin. |
money et smallmoney |
Seules les parties entières des types de données money et smallmoney sont significatives. Si la partie décimale de données SQL money est tronquée pendant la conversion du type de données, le pilote ODBC SQL Server Native Client retourne un avertissement, et non une erreur. |
SQL_BINARY (accepte les valeurs NULL) |
En cas de connexion à une instance de SQL Server 6.0 et versions antérieures, si une colonne SQL_BINARY accepte les valeurs NULL, les données stockées dans la source de données ne sont pas complétées avec des zéros. Lorsque des données d'une telle colonne sont récupérées, le pilote ODBC SQL Server Native Client les complète avec des zéros à droite. Toutefois, les données créées dans des opérations effectuées par SQL Server, telles que la concaténation, ne font pas l'objet d'un tel remplissage. Par ailleurs, lorsque des données sont placées dans une telle colonne dans une instance de SQL Server 6.0 ou versions antérieures, SQL Server tronque les données à droite si elles sont trop longues pour tenir dans la colonne.
Remarque
Le pilote ODBC SQL Server Native Client ne prend pas en charge la connexion à SQL Server 6.5 et versions antérieures.
|
SQL_CHAR (troncation) |
En cas de connexion à une instance de SQL Server 6.0 et versions antérieures, lorsque les données sont placées dans une colonne SQL_CHAR, SQL Server les tronque à droite sans avertissement si les données sont trop longues pour tenir dans la colonne.
Remarque
Le pilote ODBC SQL Server Native Client ne prend pas en charge la connexion à SQL Server 6.5 et versions antérieures.
|
SQL_CHAR (accepte les valeurs NULL) |
En cas de connexion à une instance de SQL Server 6.0 et versions antérieure, si une colonne SQL_CHAR accepte les valeurs NULL, les données stockées dans la source de données ne sont pas complétées avec des espaces. Lorsque des données d'une telle colonne sont récupérées, le pilote ODBC SQL Server Native Client les complète avec des espaces à droite. Toutefois, les données créées dans des opérations effectuées par SQL Server, telles que la concaténation, ne font pas l'objet d'un tel remplissage.
Remarque
Le pilote ODBC SQL Server Native Client ne prend pas en charge la connexion à SQL Server 6.5 et versions antérieures.
|
SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_WLONGVARCHAR |
Les mises à jour de colonnes avec les types de données SQL_LONGVARBINARY, SQL_LONGVARCHAR ou SQL_WLONGVARCHAR (à l'aide d'une clause WHERE) qui affectent plusieurs lignes sont entièrement prises en charge en cas de connexion à une instance de SQL Server 6.x et versions ultérieures. En cas de connexion à une instance de SQL Server 4.2x, une erreur S1000 « Insertion/mise à jour partielle. L'insertion ou la mise à jour d'un texte ou de colonnes d'images n'a pas abouti. » est retournée si la mise à jour affecte plusieurs lignes.
Remarque
Le pilote ODBC SQL Server Native Client ne prend pas en charge la connexion à SQL Server 6.5 et versions antérieures.
|
Paramètres de fonction de chaîne |
Les paramètres string_exp aux fonctions de chaîne doivent être du type de données SQL_CHAR ou SQL_VARCHAR. Les types de données SQL_LONG_VARCHAR ne sont pas pris en charge dans les fonctions de chaîne. Le paramètre count doit être inférieur ou égal à 8 000 car la longueur maximale des types de données SQL_CHAR et SQL_VARCHAR est limitée à 8 000 caractères. |
Littéraux d'heure |
Lorsque des littéraux d'heure sont stockés dans une colonne SQL_TIMESTAMP (types de données SQL Serverdatetime ou smalldatetime), leur valeur de date est le 1er janvier 1900. |
timestamp |
Seule une valeur NULL peut être insérée manuellement dans une colonne timestamp . Toutefois, les colonnestimestamp étant automatiquement mises à jour par SQL Server, une valeur NULL est remplacée. |
tinyint |
Le SQL Servertinyint n'est pas signé. Une colonne tinyint est liée par défaut à une variable de type de données SQL_C_UTINYINT. |
Types de données alias |
En cas de connexion à une instance de SQL Server 4.2x, le pilote ODBC ajoute la valeur NULL à une définition de colonne qui ne déclare pas explicitement la possibilité de valeur NULL d'une colonne. Par conséquent, la possibilité de valeur NULL stockée dans la définition d'un type de données alias est ignorée. En cas de connexion à une instance de SQL Server 4.2x, des colonnes avec un type de données alias dont le type de données de base est char ou binary et pour lesquelles la possibilité de valeur NULL n'est pas déclarée sont créées en tant que type de données varchar ou varbinary. SQLColAttribute, SQLColumns et SQLDescribeCol retournent SQL_VARCHAR ou SQL_VARBINARY comme type de données pour ces colonnes. Les données qui sont récupérées de ces colonnes ne sont pas complétées.
Remarque
Le pilote ODBC SQL Server Native Client ne prend pas en charge la connexion à SQL Server 6.5 et versions antérieures.
|
Types de données LONG |
Les paramètres data-at-execution sont restreints pour les types de données SQL_LONGVARBINARY et SQL_LONGVARCHAR. |
Types de valeur élevée |
Le pilote ODBC SQL Server Native Client expose les types varchar(max), varbinary(max) et nvarchar(max) en tant que SQLSQL_VARCHAR, SQL_VARBINARY et SQL_WVARCHAR (respectivement) dans les API qui acceptent ou retournent des types de données SQL ODBC. |
Type défini par l'utilisateur (UDT) |
Les colonnes UDT sont mappées en tant que SQL_SS_UDT. Si une colonne UDT est mappée explicitement à un autre type dans l'instruction SQL à l'aide des méthodes ToString() ou ToXMLString() du type UDT, ou via les fonctions CAST/CONVERT, le type de la colonne dans le jeu de résultats reflète le type réel vers lequel la colonne a été convertie. Le pilote ODBC SQL Server Native Client ne peut se lier qu'à une colonne UDT définie en tant que binaire. SQL Server prend uniquement en charge la conversion entre les types de données SQL_SS_UDT et SQL_C_BINARY. |
XML |
SQL Server convertit automatiquement le code XML en texte Unicode. Le type XML est mappé en tant que SQL_SS_XML. |