Partager via


SQLBindCol

En règle générale, tenez compte des implications de l’utilisation de SQLBindCol pour provoquer la conversion de données. Les conversions de liaison sont des processus clients. Par exemple, la récupération d’une valeur à virgule flottante liée à une colonne de caractères entraîne le pilote à effectuer la conversion float-à-caractère localement lorsqu’une ligne est extraite. La fonction Transact-SQL CONVERT peut être utilisée pour placer le coût de la conversion de données sur le serveur.

Une instance de SQL Server peut retourner plusieurs jeux de lignes de résultat sur une seule exécution d’instruction. Chaque jeu de résultats doit être lié séparément. Pour plus d’informations sur la liaison pour 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 SQL_C_BINARYTargetType. Les colonnes liées aux types spécifiques à SQL Server ne sont pas portables. Les types de données ODBC C spécifiques à SQL Server définis correspondent aux définitions de type de la bibliothèque de bases de données, et DB-Library développeurs de portage d’applications peuvent vouloir tirer parti de cette fonctionnalité.

La troncation des données de création de rapports 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 larges pour retourner des données. Pour les données de caractères, la largeur doit inclure de l’espace pour un terminateur de chaîne lorsque le comportement du pilote par défaut pour l’arrêt 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 pour 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 caractère dans lequel stocker le terminateur Null. SQLGetData peut être utilisé pour récupérer efficacement des données de caractères et binaires longs sans troncation.

Pour les types de données à 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ée et les « données de chaîne ; avertissement de troncation droite » est émis. L’argument StrLen_or_IndPtr contient le nombre de caractères/octets stockés dans la mémoire tampon.

Prise en charge de SQLBindCol pour les fonctionnalités de date et d’heure améliorées

Les valeurs de colonne de résultat des types date/heure sont converties comme décrit dans Conversions de SQL en C. Notez que pour récupérer les colonnes time et datetimeoffset en tant que structures correspondantes (SQL_SS_TIME2_STRUCT et SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType doit être spécifié en tant que SQL_C_DEFAULT ou SQL_C_BINARY.

Pour plus d’informations, consultez Améliorations de date et d’heure (ODBC).

Prise en charge de SQLBindCol pour les UDT CLR volumineux

SQLBindCol prend en charge les types clR définis par l’utilisateur (UDT). Pour plus d’informations, consultez Les types CLR définis par l’utilisateur (ODBC) volumineux.

Voir aussi

SQLBindCol, fonction
Détails de l’implémentation d’API ODBC