SQLBindCol
D'une manière générale, prenez en considération les implications de l'utilisation de SQLBindCol pour convertir des données. Les conversions de liaison sont des processus clients. Ainsi, par exemple, l'extraction d'une valeur à virgule flottante liée à une colonne de type character conduit le pilote à effectuer localement la conversion du type de données float en character lorsqu'une ligne est extraite. La fonction Transact-SQL CONVERT peut être utilisée pour reporter le coût de la conversion des données sur le serveur.
Une instance de SQL Server peut retourner plusieurs jeux de lignes de résultats à l'issue de l'exécution d'une même instruction. Chaque jeu de résultats doit être lié séparément. Pour plus d'informations sur la liaison de plusieurs jeux de résultats, consultez SQLMoreResults.
Le développeur peut lier des colonnes à des types de données C spécifiques à SQL Server à l'aide de la valeur TargetType SQL_C_BINARY. Les colonnes liées à des types propres à SQL Server ne sont pas portables. Les types de données ODBC C propres à SQL Server qui sont définis correspondent aux définitions de types de DB-Library. Or les développeurs DB-Library portant des applications souhaiteront peut-être tirer parti de cette fonctionnalité.
Le signalement de la troncation de données est un processus coûteux pour le pilote ODBC SQL Server Native Client. Vous pouvez éviter la troncation en veillant à ce que toutes les mémoires tampons de données liées soient suffisamment grandes pour retourner des données. Pour les données de type character, la largeur doit inclure l'espace nécessaire pour un indicateur de fin de chaîne lorsque le comportement par défaut du pilote pour l'indicateur de fin de chaîne est utilisé. Par exemple, la liaison d'une colonne SQL Server char(5) à un tableau de cinq caractères entraîne la troncation de chaque valeur extraite. La liaison de la même colonne à un tableau de six caractères évite la troncation en fournissant un élément de type character dans lequel stocker l'indicateur de fin null. SQLGetData peut être utilisé pour extraire efficacement des données de type character ou binary de grande taille sans troncation.
Pour les types de données de valeur élevée, si la mémoire tampon fournie par l'utilisateur n'est pas suffisamment grande pour contenir la valeur entière de la colonne, SQL_SUCCESS_WITH_INFO est retourné et l'avertissement « Troncation à droite de la chaîne de données » est affiché. L'argument StrLen_or_IndPtr contient le nombre de chars/octets stockés dans la mémoire tampon.
Prise en charge par SQLBindCol des fonctionnalités de date et heure améliorées
Les valeurs de colonnes de résultats de type date/heure sont converties comme décrit dans Conversions de SQL à C. Notez que pour récupérer les colonnes time et datetimeoffset et les structures correspondantes (SQL_SS_TIME2_STRUCT et SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType doit être spécifié comme SQL_C_DEFAULT ou SQL_C_BINARY.
Pour plus d'informations, consultez Améliorations de la date et de l'heure (ODBC).
Prise en charge par SQLSetDescRec des grands types CLR définis par l'utilisateur
SQLBindCol prend en charge les grands types CLR définis par l'utilisateur (UDT). Pour plus d'informations, consultez Types CLR volumineux définis par l'utilisateur (ODBC).
Voir aussi
Concepts
Détails d'implémentation d'une API ODBC