Partager via


SQLPutData

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

Les restrictions suivantes s’appliquent lors de l’utilisation de SQLPutData pour envoyer plus de 65 535 octets de données (pour SQL Server version 4.21a) ou 400 Ko de données (pour SQL Server version 6.0 et ultérieure) pour une colonne SQL_LONGVARCHAR (texte), SQL_WLONGVARCHAR (ntext) ou SQL_LONGVARBINARY (image) :

  • Le paramètre référencé peut être la insert_value dans une instruction INSERT.

  • Le paramètre référencé peut être une expression dans la clause SET d’une instruction UPDATE.

L’annulation d’une séquence d’appels SQLPutData qui fournissent des données dans des blocs à un serveur exécutant SQL Server provoque une mise à jour partielle de la valeur de la colonne lors de l’utilisation de la version 6.5 ou antérieure. Le texte, ntext ou colonne d’image référencé lorsque SQLCancel a été appelé est défini sur une valeur d’espace réservé intermédiaire.

Remarque

Le pilote ODBC SQL Server Native Client ne prend pas en charge la connexion à SQL Server version 6.5 et antérieure.

Diagnostics

Sql Server Native Client est spécifique à SQLSTATE pour SQLPutData :

SQLSTATE Erreur Description
22026 Chaîne de données ou longueur non correspondante Si la longueur des données en octets à envoyer a été spécifiée par une application, par exemple, avec SQL_LEN_DATA_AT_EXEC(n) où n est supérieur à 0, le nombre total d’octets donné par l’application via SQLPutData doit correspondre à la longueur spécifiée.

SQLPutData et paramètres table

SQLPutData est utilisé par une application lors de l’utilisation de la liaison de ligne de variable avec des paramètres table. Le paramètre StrLen_Or_Ind indique qu’il est prêt pour le pilote à collecter des données pour la ligne ou les lignes suivantes des données de paramètre table, ou qu’aucune autre ligne n’est disponible :

  • Une valeur supérieure à 0 indique que le jeu suivant de valeurs de ligne est disponible.

  • La valeur 0 indique qu'il ne reste plus de lignes à envoyer.

  • Toute valeur inférieure à 0 est une erreur et entraîne la consignation d'un enregistrement de diagnostic avec SQLState HY090 et le message « Longueur de chaîne ou de mémoire tampon non valide ».

Le paramètre DataPtr est ignoré, mais doit être défini sur une valeur non NULL. Pour plus d’informations, consultez la section sur la liaison de lignes TVP variable dans liaison et transfert de données des paramètres table et des valeurs de colonne.

Si StrLen_Or_Ind a une valeur autre que SQL_DEFAULT_PARAM ou un nombre compris entre 0 et le SQL_PARAMSET_SIZE (autrement dit, le paramètre ColumnSize de SQLBindParameter), il s’agit d’une erreur. Cette erreur conduit SQLPutData à retourner SQL_ERROR: SQLSTATE=HY090, « Longueur de chaîne ou de mémoire tampon non valide ».

Pour plus d’informations sur les paramètres table, consultez Paramètres table (ODBC) .

Prise en charge de SQLPutData pour les fonctionnalités Date et Heure améliorées

Les valeurs de paramètres des types date/heure sont converties comme décrit dans Conversions de C en SQL.

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

Prise en charge des grands types définis par l'utilisateur CLR par SQLPutData

SQLPutData prend en charge de grands 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

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