SQLExecDirect, fonction

Conformité
Version introduite : Conformité aux normes ODBC 1.0 : ISO 92

Résumé
SQLExecDirect exécute une instruction préparable à l’aide des valeurs actuelles des variables de marqueur de paramètre si des paramètres existent dans l’instruction. SQLExecDirect est le moyen le plus rapide de soumettre une instruction SQL pour une exécution unique.

Syntaxe

  
SQLRETURN SQLExecDirect(  
     SQLHSTMT     StatementHandle,  
     SQLCHAR *    StatementText,  
     SQLINTEGER   TextLength);  

Arguments

StatementHandle
[Entrée] Handle d’instruction.

StatementText
[Entrée] Instruction SQL à exécuter.

TextLength
[Entrée] Longueur de *StatementText en caractères.

Retours

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE ou SQL_PARAM_DATA_AVAILABLE.

Diagnostics

Lorsque SQLExecDirect retourne SQL_ERROR ou SQL_SUCCESS_WITH_INFO, une valeur SQLSTATE associée peut être obtenue en appelant SQLGetDiagRec avec un HandleType de SQL_HANDLE_STMT et un handle d’instructionHandle. Le tableau suivant répertorie les valeurs SQLSTATE couramment retournées par SQLExecDirect et explique chacune d’elles dans le contexte de cette fonction ; la notation « (DM) » précède les descriptions des SQLSTATEs retournées par le Gestionnaire de pilotes. Le code de retour associé à chaque valeur SQLSTATE est SQL_ERROR, sauf indication contraire.

SQLSTATE Erreur Description
01000 Avertissement général Message d’information spécifique au pilote. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
01001 Conflit d’opérations de curseur *StatementText contenait une instruction de mise à jour ou de suppression positionnée, et aucune ligne ou plusieurs lignes n’ont été mises à jour ou supprimées. (Pour plus d’informations sur les mises à jour de plusieurs lignes, consultez la description du SQL_ATTR_SIMULATE_CURSOR Attribut dans SQLSetStmtAttr.)

(La fonction retourne SQL_SUCCESS_WITH_INFO.)
01003 Valeur NULL éliminée dans la fonction set L’argument StatementText contenait une fonction set (par exemple AVG, MAX, MIN, etc.), mais pas la fonction count set et les valeurs d’argument NULL ont été supprimées avant l’application de la fonction. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
01004 Données de chaîne, tronquées à droite Les données de chaîne ou binaire retournées pour un paramètre d’entrée/sortie ou de sortie ont entraîné la troncation du caractère non vide ou des données binaires non NULL. S’il s’agissait d’une valeur de chaîne, elle était tronquée à droite. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
01006 Privilège non révoqué *StatementText contenait une instruction REVOKE et l’utilisateur n’avait pas le privilège spécifié. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
01007 Privilège non accordé *StatementText était une instruction GRANT , et l’utilisateur n’a pas pu accorder le privilège spécifié.
01S02 Valeur d’option modifiée Un attribut d’instruction spécifié n’était pas valide en raison de conditions de travail d’implémentation. Par conséquent, une valeur similaire a été temporairement remplacée. (SQLGetStmtAttr peut être appelé pour déterminer la valeur temporairement substituée.) La valeur de remplacement est valide pour l’InstructionHandle jusqu’à ce que le curseur soit fermé, auquel point l’attribut d’instruction revient à sa valeur précédente. Les attributs d’instruction qui peuvent être modifiés sont les suivants :

SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ ATTR_SIMULATE_CURSOR

(La fonction retourne SQL_SUCCESS_WITH_INFO.)
01S07 Troncation fractionnelle Les données retournées pour un paramètre d’entrée/sortie ou de sortie ont été tronquées de sorte que la partie fractionnaire d’un type de données numérique a été tronquée ou la partie fractionnaire du composant de temps d’une heure, d’un horodatage ou d’un type de données d’intervalle a été tronquée.

(La fonction retourne SQL_SUCCESS_WITH_INFO.)
07002 Champ COUNT incorrect Le nombre de paramètres spécifiés dans SQLBindParameter était inférieur au nombre de paramètres de l’instruction SQL contenue dans *StatementText.

SQLBindParameter a été appelé avec ParameterValuePtr défini sur un pointeur Null, StrLen_or_IndPtr pas défini sur SQL_NULL_DATA ou SQL_DATA_AT_EXEC, et InputOutputType n’a pas la valeur SQL_PARAM_OUTPUT, de sorte que le nombre de paramètres spécifiés dans SQLBindParameter était supérieur au nombre de paramètres de l’instruction SQL contenue dans *StatementText.
07006 Violation d’attribut de type de données restreint La valeur de données identifiée par l’argument ValueType dans SQLBindParameter pour le paramètre lié n’a pas pu être convertie en type de données identifié par l’argument ParameterType dans SQLBindParameter.

La valeur de données retournée pour un paramètre lié comme SQL_PARAM_INPUT_OUTPUT ou SQL_PARAM_OUTPUT n’a pas pu être convertie en type de données identifié par l’argument ValueType dans SQLBindParameter.

(Si les valeurs de données d’une ou plusieurs lignes n’ont pas pu être converties, mais qu’une ou plusieurs lignes ont été retournées avec succès, cette fonction retourne SQL_SUCCESS_WITH_INFO.)
07007 Violation de valeur de paramètre restreinte Le type de paramètre SQL_PARAM_INPUT_OUTPUT_STREAM est utilisé uniquement pour un paramètre qui envoie et reçoit des données en parties. Une mémoire tampon liée à l’entrée n’est pas autorisée pour ce type de paramètre.

Cette erreur se produit lorsque le type de paramètre est SQL_PARAM_INPUT_OUTPUT et lorsque le *StrLen_or_IndPtr spécifié dans SQLBindParameter n’est pas égal à SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(len) ou SQL_DATA_AT_EXEC.
07S01 Utilisation non valide du paramètre par défaut Une valeur de paramètre, définie avec SQLBindParameter, était SQL_DEFAULT_PARAM et le paramètre correspondant n’avait pas de valeur par défaut.
08S01 Échec du lien de communication Le lien de communication entre le pilote et la source de données à laquelle le pilote a été connecté a échoué avant l’achèvement du traitement de la fonction.
21S01 La liste des valeurs d’insertion ne correspond pas à la liste de colonnes *StatementText contenait une instruction INSERT et le nombre de valeurs à insérer ne correspondait pas au degré de la table dérivée.
21S02 Le degré de table dérivée ne correspond pas à la liste des colonnes *StatementText contenait une instruction CREATE VIEW et la liste des colonnes non qualifiées (le nombre de colonnes spécifiées pour l’affichage dans les arguments d’identificateur de colonne de l’instruction SQL) contenait plus de noms que le nombre de colonnes de la table dérivée définie par l’argument de spécification de requête de l’instruction SQL.
22001 Données de chaîne, troncation droite L’affectation d’un caractère ou d’une valeur binaire à une colonne a entraîné la troncation des données de caractères non vides ou des données binaires non null.
22002 Variable d’indicateur requise, mais non fournie Les données NULL étaient liées à un paramètre de sortie dont le StrLen_or_IndPtr défini par SQLBindParameter était un pointeur Null.
22003 Valeur numérique hors plage *StatementText contenait une instruction SQL qui contenait un paramètre numérique lié ou un littéral, et la valeur provoquait la partie entière (par opposition à la fraction) du nombre à tronquer lorsqu’elle est affectée à la colonne de table associée.

Le renvoi d’une valeur numérique (en tant que numérique ou chaîne) pour un ou plusieurs paramètres d’entrée/sortie ou de sortie aurait provoqué la troncation de l’ensemble (par opposition à la fraction) du nombre.
22007 Format datetime non valide *StatementText contenait une instruction SQL qui contenait une structure de date, d’heure ou d’horodatage comme paramètre lié, et le paramètre était, respectivement, une date, une heure ou un horodatage non valide.

Un paramètre d’entrée/sortie ou de sortie était lié à une structure C de date, d’heure ou d’horodatage, et une valeur dans le paramètre retourné était, respectivement, une date, une heure ou un horodatage non valide. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
22008 Dépassement de champ Datetime *StatementText contenait une instruction SQL qui contenait une expression datetime qui, lorsqu’elle était calculée, entrait une structure de date, d’heure ou d’horodatage non valide.

Une expression datetime calculée pour un paramètre d’entrée/sortie ou de sortie a entraîné une structure C de date, d’heure ou d’horodatage C non valide.
22012 Division par zéro *StatementText contenait une instruction SQL qui contenait une expression arithmétique qui a provoqué la division par zéro.

Une expression arithmétique calculée pour un paramètre d’entrée/sortie ou de sortie a entraîné la division par zéro.
22015 Dépassement de champ d’intervalle *StatementText contenait un paramètre numérique ou d’intervalle exact qui, lorsqu’il est converti en type de données SQL d’intervalle, a provoqué une perte de chiffres significatifs.

*StatementText contenait un paramètre d’intervalle avec plusieurs champs qui, lorsqu’ils étaient convertis en type de données numérique dans une colonne, n’avaient aucune représentation dans le type de données numérique.

*StatementText contenait des données de paramètre affectées à un type SQL d’intervalle, et il n’y avait aucune représentation de la valeur du type C dans le type SQL d’intervalle.

L’affectation d’un paramètre d’entrée/sortie ou de sortie qui était un type SQL numérique ou d’intervalle exact à un type C d’intervalle a provoqué une perte de chiffres significatifs.

Lorsqu’un paramètre d’entrée/sortie ou de sortie a été affecté à une structure C d’intervalle, il n’y avait aucune représentation des données dans la structure de données d’intervalle.
22018 Valeur de caractère non valide pour la spécification de cast *StatementText contenait un type C qui était un type numérique exact ou approximatif, une datetime ou un type de données d’intervalle ; le type SQL de la colonne était un type de données caractère ; et la valeur de la colonne n’était pas un littéral valide du type C lié.

Lorsqu’un paramètre d’entrée/sortie ou de sortie a été retourné, le type SQL était un nombre exact ou approximatif, un datetime ou un type de données d’intervalle ; le type C était SQL_C_CHAR ; et la valeur de la colonne n’était pas un littéral valide du type SQL lié.
22019 Caractère d’échappement non valide *StatementText contenait une instruction SQL qui contenait un prédicat LIKE avec une échappement dans la clause WHERE , et la longueur du caractère d’échappement suivant ESCAPE n’était pas égale à 1.
22025 Séquence d’échappement non valide *StatementText contenait une instruction SQL qui contenait « LIKE pattern value ESCAPE character » dans la clause WHERE, et le caractère suivant le caractère d’échappement dans la valeur de modèle n’était pas l’un des « % » ou « _ ».
23000 Violation de contrainte d’intégrité *StatementText contenait une instruction SQL qui contenait un paramètre ou un littéral. La valeur de paramètre était NULL pour une colonne définie comme NOT NULL dans la colonne de table associée, une valeur en double a été fournie pour une colonne contrainte pour contenir uniquement des valeurs uniques, ou une autre contrainte d’intégrité a été violée.
24 000 État de curseur non valide Un curseur a été positionné sur statementHandle par SQLFetch ou SQLFetchScroll. Cette erreur est retournée par le Gestionnaire de pilotes si SQLFetch ou SQLFetchScroll n’a pas retourné SQL_NO_DATA et est retournée par le pilote si SQLFetch ou SQLFetchScroll a retourné SQL_NO_DATA.

Un curseur a été ouvert, mais pas positionné sur StatementHandle.

*StatementText contenait une instruction de mise à jour ou de suppression positionnée et le curseur était positionné avant le début du jeu de résultats ou après la fin du jeu de résultats.
34000 Nom de curseur non valide *StatementText contenait une instruction de mise à jour ou de suppression positionnée, et le curseur référencé par l’instruction exécutée n’était pas ouvert.
3D000 Nom du catalogue non valide Le nom du catalogue spécifié dans StatementText n’était pas valide.
3F000 Nom de schéma non valide Le nom de schéma spécifié dans StatementText n’était pas valide.
40001 Échec de sérialisation La transaction a été restaurée en raison d’un interblocage de ressources avec une autre transaction.
40003 Saisie semi-automatique de l’instruction inconnue La connexion associée a échoué pendant l’exécution de cette fonction et l’état de la transaction ne peut pas être déterminé.
42000 Erreur de syntaxe ou violation d’accès *StatementText contenait une instruction SQL qui n’était pas préparable ou contenait une erreur de syntaxe.

L’utilisateur n’a pas été autorisé à exécuter l’instruction SQL contenue dans *StatementText.
42S01 La table ou la vue de base existe déjà *StatementText contenait une instruction CREATE TABLE ou CREATE VIEW , et le nom de la table ou de la vue spécifié existe déjà.
42S02 Table de base ou vue introuvable *StatementText contenait une instruction DROP TABLE ou DROP VIEW , et le nom de table ou de vue spécifié n’existait pas.

*StatementText contenait une instruction ALTER TABLE et le nom de table spécifié n’existait pas.

*StatementText contenait une instruction CREATE VIEW et un nom de table ou de vue défini par la spécification de requête n’existait pas.

*StatementText contenait une instruction CREATE INDEX et le nom de table spécifié n’existait pas.

*StatementText contenait une instruction GRANT ou REVOKE , et le nom de table ou de vue spécifié n’existait pas.

*StatementText contenait une instruction SELECT et un nom de table ou de vue spécifié n’existait pas.

*StatementText contenait une instruction DELETE, INSERT ou UPDATE , et le nom de table spécifié n’existait pas.

*StatementText contenait une instruction CREATE TABLE et une table spécifiée dans une contrainte (faisant référence à une table autre que celle créée) n’existait pas.

*StatementText contenait une instruction CREATE SCHEMA et un nom de table ou de vue spécifié n’existait pas.
42S11 L’index existe déjà *StatementText contenait une instruction CREATE INDEX et le nom d’index spécifié existait déjà.

*StatementText contenait une instruction CREATE SCHEMA et le nom d’index spécifié existait déjà.
42S12 Index introuvable *StatementText contenait une instruction DROP INDEX et le nom d’index spécifié n’existait pas.
42S21 La colonne existe déjà *StatementText contenait une instruction ALTER TABLE , et la colonne spécifiée dans la clause ADD n’est pas unique ou identifie une colonne existante dans la table de base.
42S22 Colonne introuvable *StatementText contenait une instruction CREATE INDEX , et un ou plusieurs noms de colonnes spécifiés dans la liste de colonnes n’existaient pas.

*StatementText contenait une instruction GRANT ou REVOKE , et un nom de colonne spécifié n’existait pas.

*StatementText contenait une instruction SELECT, DELETE, INSERT ou UPDATE , et un nom de colonne spécifié n’existait pas.

*StatementText contenait une instruction CREATE TABLE et une colonne spécifiée dans une contrainte (faisant référence à une table autre que celle créée) n’existait pas.

*StatementText contenait une instruction CREATE SCHEMA et un nom de colonne spécifié n’existait pas.
44000 Violation de WITH CHECK OPTION L’argument StatementText contenait une instruction INSERT effectuée sur une table vue ou une table dérivée de la table vue créée en spécifiant WITH CHECK OPTION, de sorte qu’une ou plusieurs lignes affectées par l’instruction INSERT ne seront plus présentes dans la table vue.

L’argument StatementText contenait une instruction UPDATE effectuée sur une table vue ou une table dérivée de la table vue créée en spécifiant WITH CHECK OPTION, de sorte qu’une ou plusieurs lignes affectées par l’instruction UPDATE ne seront plus présentes dans la table vue.
HY000 Erreur générale Une erreur s’est produite pour laquelle il n’y avait aucun SQLSTATE spécifique et pour lequel aucun SQLSTATE spécifique à l’implémentation n’a été défini. Le message d’erreur retourné par SQLGetDiagRec dans la mémoire tampon *MessageText décrit l’erreur et sa cause.
HY001 Erreur d’allocation de mémoire Le pilote n’a pas pu allouer de mémoire nécessaire pour prendre en charge l’exécution ou l’achèvement de la fonction.
HY008 Opération annulée Le traitement asynchrone a été activé pour StatementHandle. La fonction a été appelée et avant l’exécution terminée, SQLCancel ou SQLCancelHandle a été appelée sur StatementHandle. Ensuite, la fonction a été appelée à nouveau sur l’instructionHandle.

La fonction a été appelée et avant qu’elle ait terminé l’exécution, SQLCancel ou SQLCancelHandle a été appelée sur l’InstructionHandle à partir d’un autre thread dans une application multithread.
HY009 Utilisation non valide du pointeur Null (DM) *StatementText était un pointeur Null.
HY010 Erreur de séquence de fonction (DM) Une fonction en cours d’exécution asynchrone a été appelée pour le handle de connexion associé à StatementHandle. Cette fonction asynchrone était toujours en cours d’exécution lorsque la fonction SQLExecDirect a été appelée.

(DM) SQLExecute, SQLExecDirect ou SQLMoreResults a été appelé pour l’instruction StatementHandle et retourné SQL_PARAM_DATA_AVAILABLE. Cette fonction a été appelée avant la récupération des données pour tous les paramètres diffusés en continu.

(DM) Une fonction en cours d’exécution asynchrone (et non celle-ci) a été appelée pour l’instruction StatementHandle et était toujours en cours d’exécution lorsque cette fonction a été appelée.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations ou SQLSetPos a été appelé pour l’instructionHandle et retourné SQL_NEED_DATA. Cette fonction a été appelée avant que les données ne soient envoyées pour tous les paramètres ou colonnes de données à l’exécution.
HY013 Erreur de gestion de la mémoire L’appel de fonction n’a pas pu être traité, car les objets de mémoire sous-jacents n’ont pas pu être accessibles, éventuellement en raison de conditions de mémoire insuffisantes.
HY090 Longueur de la chaîne ou de la mémoire tampon non valide (DM) L’argument TextLength était inférieur ou égal à 0, mais pas égal à SQL_NTS.

Une valeur de paramètre, définie avec SQLBindParameter, était un pointeur Null et la valeur de longueur du paramètre n’était pas 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, ou inférieure ou égale à SQL_LEN_DATA_AT_EXEC_OFFSET.

Une valeur de paramètre, définie avec SQLBindParameter, n’était pas un pointeur Null ; le type de données C était SQL_C_BINARY ou SQL_C_CHAR ; et la valeur de longueur du paramètre était inférieure à 0, mais n’était pas SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, ou inférieure ou égale à SQL_LEN_DATA_AT_EXEC_OFFSET.

Une valeur de longueur de paramètre liée par SQLBindParameter a été définie sur SQL_DATA_AT_EXEC ; le type SQL était soit SQL_LONGVARCHAR, SQL_LONGVARBINARY, soit un type de données spécifique à une source de données longue ; et le type d’informations SQL_NEED_LONG_DATA_LEN dans SQLGetInfo était « Y ».
HY105 Type de paramètre non valide La valeur spécifiée pour l’argument InputOutputType dans SQLBindParameter était SQL_PARAM_OUTPUT et le paramètre était un paramètre d’entrée.
HY109 Position du curseur non valide *StatementText contenait une instruction de mise à jour ou de suppression positionnée, et le curseur était positionné (par SQLSetPos ou SQLFetchScroll) sur une ligne qui avait été supprimée ou qui n’a pas pu être extraite.
HY117 La connexion est suspendue en raison d’un état de transaction inconnu. Seules les fonctions de déconnexion et de lecture seule sont autorisées. (DM) Pour plus d’informations sur l’état suspendu, consultez la fonction SQLEndTran.
HYC00 Fonctionnalité facultative non implémentée La combinaison des paramètres actuels des attributs d’instruction SQL_ATTR_CONCURRENCY et SQL_ATTR_CURSOR_TYPE n’a pas été prise en charge par le pilote ou la source de données.

L’attribut d’instruction SQL_ATTR_USE_BOOKMARKS a été défini sur SQL_UB_VARIABLE, et l’attribut d’instruction SQL_ATTR_CURSOR_TYPE a été défini sur un type de curseur pour lequel le pilote ne prend pas en charge les signets.
HYT00 Délai expiré La période d’expiration de la requête a expiré avant que la source de données ne retourne le jeu de résultats. La période d’expiration est définie via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 Délai d’attente de la connexion expiré La période d’expiration de la connexion a expiré avant que la source de données ne réponde à la demande. La période d’expiration de connexion est définie via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Le pilote ne prend pas en charge cette fonction (DM) Le pilote associé à StatementHandle ne prend pas en charge la fonction.
IM017 L’interrogation est désactivée en mode de notification asynchrone Chaque fois que le modèle de notification est utilisé, l’interrogation est désactivée.
IM018 SQLCompleteAsync n’a pas été appelé pour terminer l’opération asynchrone précédente sur ce handle. Si l’appel de fonction précédent sur le handle retourne SQL_STILL_EXECUTING et si le mode de notification est activé, SQLCompleteAsync doit être appelé sur le handle pour effectuer un post-traitement et terminer l’opération.

Commentaires

L’application appelle SQLExecDirect pour envoyer une instruction SQL à la source de données. Pour plus d’informations sur l’exécution directe, consultez Exécution directe. Le pilote modifie l’instruction pour utiliser la forme de SQL utilisée par la source de données, puis l’envoie à la source de données. En particulier, le pilote modifie les séquences d’échappement utilisées pour définir certaines fonctionnalités dans SQL. Pour connaître la syntaxe des séquences d’échappement, consultez Séquences d’échappement dans ODBC.

L’application peut inclure un ou plusieurs marqueurs de paramètre dans l’instruction SQL. Pour inclure un marqueur de paramètre, l’application incorpore un point d’interrogation ( ?) dans l’instruction SQL à la position appropriée. Pour plus d’informations sur les paramètres, consultez Paramètres de l’instruction.

Si l’instruction SQL est une instruction SELECT et si l’application appelée SQLSetCursorName pour associer un curseur à une instruction, le pilote utilise le curseur spécifié. Sinon, le pilote génère un nom de curseur.

Si la source de données est en mode de validation manuelle (nécessitant une initiation de transaction explicite) et qu’une transaction n’a pas déjà été lancée, le pilote lance une transaction avant d’envoyer l’instruction SQL. Pour plus d’informations, consultez Le mode de validation manuelle.

Si une application utilise SQLExecDirect pour envoyer une instruction COMMIT ou ROLLBACK , elle ne sera pas interopérable entre les produits SGBD. Pour valider ou restaurer une transaction, une application appelle SQLEndTran.

Si SQLExecDirect rencontre un paramètre data-at-execution, il retourne SQL_NEED_DATA. L’application envoie les données à l’aide de SQLParamData et DE SQLPutData. Consultez SQLBindParameter, SQLParamData, SQLPutData et Envoi de données longues.

Si SQLExecDirect exécute une instruction de mise à jour, d’insertion ou de suppression recherchée qui n’affecte aucune ligne à la source de données, l’appel à SQLExecDirect retourne SQL_NO_DATA.

Si la valeur de l’attribut d’instruction SQL_ATTR_PARAMSET_SIZE est supérieure à 1 et que l’instruction SQL contient au moins un marqueur de paramètre, SQLExecDirect exécute l’instruction SQL une fois pour chaque ensemble de valeurs de paramètres des tableaux pointés par l’argument ParameterValuePointer dans l’appel à SQLBindParameter. Pour plus d’informations, consultez Tableaux de valeurs de paramètre.

Si les signets sont activés et qu’une requête est exécutée qui ne peut pas prendre en charge les signets, le pilote doit tenter de forcer l’environnement à un signet prenant en charge les signets en modifiant une valeur d’attribut et en retournant SQLSTATE 01S02 (valeur d’option modifiée). Si l’attribut ne peut pas être modifié, le pilote doit retourner SQLSTATE HY024 (valeur d’attribut non valide).

Remarque

Lorsque vous utilisez le regroupement de connexions, une application ne doit pas exécuter d’instructions SQL qui modifient la base de données ou le contexte de la base de données, comme l’instruction USE database dans SQL Server, qui modifie le catalogue utilisé par une source de données.

Exemple de code

Consultez SQLBindCol, SQLGetData et l’exemple de programme ODBC.

Pour plus d’informations sur Consultez
Liaison d’une mémoire tampon à une colonne dans un jeu de résultats SQLBindCol, fonction
Annulation du traitement des instructions SQLCancel, fonction
Exécution d’une opération de validation ou de restauration SQLEndTran, fonction
Exécution d’une instruction SQL préparée SQLExecute, fonction
Extraction de plusieurs lignes de données SQLFetch, fonction
Extraction d’un bloc de données ou défilement d’un jeu de résultats SQLFetchScroll, fonction
Retour d’un nom de curseur SQLGetCursorName, fonction
Extraction d’une partie ou de l’ensemble d’une colonne de données SQLGetData, fonction
Retour du paramètre suivant pour lequel envoyer des données SQLParamData, fonction
Préparation d’une instruction pour l’exécution SQLPrepare, fonction
Envoi de données de paramètre au moment de l’exécution SQLPutData, fonction
Définition d’un nom de curseur SQLSetCursorName, fonction
Définition d’un attribut d’instruction SQLSetStmtAttr, fonction

Voir aussi

Informations de référence sur l’API ODBC
Fichiers d’en-tête ODBC