Partage via


SQLBindCol

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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. 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 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 TargetType SQL_C_BINARY. 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 pour db-Library et les développeurs de bibliothèques de bases de données 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 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 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 type character dans lequel stocker l'indicateur de fin 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 par SQLBindCol des fonctionnalités de date et 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