SQLExecDirect, fonction

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

Résumé
SQLExecDirect exécute une instruction préparable, en utilisant les valeurs actuelles des variables de marqueur de paramètre si des paramètres existent dans l’instruction. SQLExecDirect est le moyen le plus rapide d’envoyer une instruction SQL pour une exécution ponctuelle.

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 of StatementHandle. 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 de SQLSTATEs retournées par le Gestionnaire de pilotes. Le code de retour associé à chaque valeur SQLSTATE est SQL_ERROR, sauf indication contraire.

SQLSTATE Error Description
01000 Avertissement général Message d’information spécifique au pilote. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
01001 Conflit d’opération 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 de l’attribut SQL_ATTR_SIMULATE_CURSOR dans SQLSetStmtAttr.)

(La fonction retourne SQL_SUCCESS_WITH_INFO.)
01003 Valeur NULL supprimée dans la fonction set L’argument StatementText contenait une fonction set (par exemple, AVG, MAX, MIN, etc.), mais pas la fonction de jeu COUNT 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 binaires retournées pour un paramètre d’entrée/sortie ou de sortie ont entraîné la troncation de caractères non vides ou de 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 bénéficier du privilège spécifié.
01S02 Valeur de l’option modifiée Un attribut d’instruction spécifié n’étant pas valide en raison des conditions de travail d’implémentation, une valeur similaire a été temporairement remplacée. (SQLGetStmtAttr peut être appelé pour déterminer quelle est la valeur substituée temporairement.) La valeur de substitution est valide pour l’InstructionHandle jusqu’à ce que le curseur soit fermé, à ce moment-là, 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 fractionnaire Les données retournées pour un paramètre d’entrée/sortie ou de sortie ont été tronquées de telle sorte que la partie fractionnaire d’un type de données numérique a été tronquée ou que la partie fractionnaire du composant de temps d’un type de données d’heure, d’horodatage ou d’intervalle ait é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 dans l’instruction SQL contenue dans *StatementText.
07006 Violation d’attribut de type de données restreinte 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é en tant que 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 restreint 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 que 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 de la liaison de communication La liaison de communication entre le pilote et la source de données à laquelle le pilote a été connecté a échoué avant que la fonction n’ait terminé le traitement.
21S01 Insérer une liste de valeurs 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 la table dérivée ne correspond pas à la liste de colonnes *StatementText contenait une instruction CREATE VIEW , et la liste de colonnes non qualifiées (le nombre de colonnes spécifiées pour la vue 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 de données de caractères non vides ou de 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 l’StrLen_or_IndPtr définie 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 entraînait la tronquation de la partie entière (plutôt que fractionnaire) du nombre lorsqu’elle était affectée à la colonne de table associée.

Le renvoi d’une valeur numérique (sous forme numérique ou chaîne) pour un ou plusieurs paramètres d’entrée/sortie ou de sortie aurait entraîné la tronquation de la partie entière (et non fractionnaire) du nombre.
22007 Format datetime non valide *StatementText contenait une instruction SQL qui contenait une structure de date, d’heure ou d’horodatage en tant que 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, entravait 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 non valide.
22012 Division par zéro *StatementText contenait une instruction SQL qui contenait une expression arithmétique qui provoquait une division par zéro.

Une expression arithmétique calculée pour un paramètre d’entrée/sortie ou de sortie a entraîné une 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 un type de données SQL d’intervalle, provoquait une perte de chiffres significatifs.

*StatementText contenait un paramètre d’intervalle avec plusieurs champs qui, lors de la conversion en type de données numérique dans une colonne, n’avait aucune représentation dans le type de données numérique.

*StatementText contenait des données de paramètre qui ont été 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 entraîné une perte de chiffres significatifs.

Lorsqu’un paramètre d’entrée/sortie ou de sortie a été affecté à une structure d’intervalle C, 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 de données numérique exact ou approximatif, un datetime ou un type de données interval ; 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 type de données numérique exact ou approximatif, un datetime ou un type de données d’intervalle ; le type C a été SQL_C_CHAR ; et la valeur dans 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 un élément ESCAPE 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 « LIKEpattern valueESCAPEescape character » dans la clause WHERE , et le caractère suivant le caractère d’échappement dans la valeur de modèle n’était pas un caractère de « % » ou « _ ».
23000 Violation de contrainte d’intégrité *StatementText contenait une instruction SQL qui contenait un paramètre ou un littéral. La valeur du 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 de ne contenir que 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 l’InstructionHandle 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 l’InstructionHandle.

*StatementText contenait une instruction de mise à jour ou de suppression positionnée, et le curseur a été 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 en cours d’exécution n’était pas ouvert.
3D000 Nom de catalogue non valide Le nom de 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é annulée en raison d’un interblocage de ressources avec une autre transaction.
40003 Saisie semi-automatique d’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’était pas autorisé à exécuter l’instruction SQL contenue dans *StatementText.
42S01 La table de base ou la vue existe déjà *StatementText contenait une instruction CREATE TABLE ou CREATE VIEW , et le nom de table ou de 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 aucun nom de table ou de vue défini par la spécification de requête n’existait.

*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 (référençant une table autre que celle en cours de création) 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 des 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 aucun nom de colonne spécifié n’existait.

*StatementText contenait une instruction CREATE TABLE et une colonne spécifiée dans une contrainte (faisant référence à une table autre que celle en cours de création) 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 exécutée sur une table consultée ou une table dérivée de la table consultée qui a été créée en spécifiant WITH CHECK OPTION, de sorte qu’une ou plusieurs lignes affectées par l’instruction INSERT ne soient plus présentes dans la table consultée.

L’argument StatementText contenait une instruction UPDATE exécutée sur une table consultée ou une table dérivée de la table consultée qui a été créée en spécifiant WITH CHECK OPTION, de sorte qu’une ou plusieurs lignes affectées par l’instruction UPDATE ne soient plus présentes dans la table vue.
HY000 Erreur générale Une erreur s’est produite pour laquelle il n’y avait pas de SQLSTATE spécifique et pour laquelle 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 la 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 l’instruction StatementHandle. La fonction a été appelée et, avant de terminer l’exécution, SQLCancel ou SQLCancelHandle a été appelé sur l’InstructionHandle. Ensuite, la fonction a été appelée à nouveau sur l’InstructionHandle.

La fonction a été appelée et, avant de terminer l’exécution, SQLCancel ou SQLCancelHandle a été appelé 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 d’exécution asynchrone a été appelée pour le handle de connexion associé à l’InstructionHandle. 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 a 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.

(DM) Une fonction d’exécution asynchrone (et non celle-ci) a été appelée pour l’InstructionHandle et s’exécutait toujours lorsque cette fonction a été appelée.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations ou SQLSetPos a été appelé pour l’InstructionHandle et a renvoyé SQL_NEED_DATA. Cette fonction a été appelée avant l’envoi des données pour toutes les colonnes ou paramètres de données au moment de 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 consultés, peut-être en raison de conditions de mémoire insuffisantes.
HY090 Chaîne ou longueur de mémoire tampon non valide (DM) L’argument TextLength était inférieur ou égal à 0, mais non é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 SQL_LONGVARCHAR, SQL_LONGVARBINARY ou un type de données long spécifique à une source de données ; 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 FONCTION SQLEndTran.
HYC00 Fonctionnalité facultative non implémentée La combinaison des paramètres actuels de l’SQL_ATTR_CONCURRENCY et des attributs d’instruction SQL_ATTR_CURSOR_TYPE n’était pas 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é Le délai d’expiration de la requête a expiré avant que la source de données ne retourne le jeu de résultats. Le délai d’expiration est défini via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 Délai d’attente de la connexion expiré Le délai d’expiration de la connexion a expiré avant que la source de données réponde à la demande. La période de délai d’expiration de la connexion est définie via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Le pilote ne prend pas en charge cette fonction (DM) Le pilote associé à l’InstructionHandle 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 effectuer 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ètres 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 d’instruction.

Si l’instruction SQL est une instruction SELECT et si l’application a appelé 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 encore été lancée, le pilote lance une transaction avant d’envoyer l’instruction SQL. Pour plus d’informations, consultez 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 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 au niveau de 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ètre à partir des tableaux pointés par l’argument ParameterValuePointer dans l’appel à SQLBindParameter. Pour plus d’informations, consultez Tableaux de valeurs de paramètres.

Si des 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 environnement qui prend 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).

Notes

Lors de l’utilisation du 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 usedatabase dans SQL Server, qui modifie le catalogue utilisé par une source de données.

Exemple de code

Consultez SQLBindCol, SQLGetData et Exemple de programme ODBC.

Pour obtenir des informations sur Consultez
Liaison d’une mémoire tampon à une colonne dans un jeu de résultats Fonction SQLBindCol
Annulation du traitement des instructions SQLCancel, fonction
Exécution d’une opération de validation ou de restauration Fonction SQLEndTran
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 Fonction SQLFetchScroll
Retour d’un nom de curseur SQLGetCursorName Function
Extraction d’une partie ou de la totalité d’une colonne de données Fonction SQLGetData
Retour du paramètre suivant pour lequel envoyer des données SQLParamData, fonction
Préparation d’une instruction pour l’exécution Fonction SQLPrepare
Envoi de données de paramètre au moment de l’exécution Fonction SQLPutData
Définition d’un nom de curseur SQLSetCursorName, fonction
Définition d’un attribut d’instruction Fonction SQLSetStmtAttr

Voir aussi

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