Partager via


Codes de retour dans ODBC

Chaque fonction dans ODBC retourne un code, appelé code de retour, qui indique la réussite globale ou l’échec de la fonction. La logique du programme repose en général sur des codes de retour.

Par exemple, le code suivant appelle SQLFetch pour récupérer les lignes d’un jeu de résultats. Il case activée le code de retour de la fonction pour déterminer si la fin du jeu de résultats a été atteinte (SQL_NO_DATA), si des informations d’avertissement ont été retournées (SQL_SUCCESS_WITH_INFO) ou si une erreur s’est produite (SQL_ERROR).

SQLRETURN   rc;  
SQLHSTMT    hstmt;  
  
while ((rc=SQLFetch(hstmt)) != SQL_NO_DATA) {  
   if (rc == SQL_SUCCESS_WITH_INFO) {  
      // Call function to display warning information.  
   } else if (rc == SQL_ERROR) {  
      // Call function to display error information.  
      break;  
   }  
   // Process row.  
}  

Le code de retour SQL_INVALID_HANDLE indique toujours une erreur de programmation et ne doit jamais se rencontrer au moment de l'exécution. Tous les autres codes de retour fournissent des informations d'exécution, bien que SQL_ERROR puisse indiquer une erreur de programmation.

Le tableau suivant définit les codes de retour.

Code de retour Description
SQL_SUCCESS La fonction s’est terminée correctement. L’application appelle SQLGetDiagField pour récupérer des informations supplémentaires à partir de l’enregistrement d’en-tête.
SQL_SUCCESS_WITH_INFO La fonction s’est terminée avec succès, éventuellement avec une erreur non irrécupérable (avertissement). L’application appelle SQLGetDiagRec ou SQLGetDiagField pour récupérer des informations supplémentaires.
SQL_ERROR Échec de la fonction. L’application appelle SQLGetDiagRec ou SQLGetDiagField pour récupérer des informations supplémentaires. Le contenu des arguments de sortie de la fonction n’est pas défini.
SQL_INVALID_HANDLE La fonction a échoué en raison d’un handle d’environnement, de connexion, d’instruction ou de descripteur non valide. Cela indique une erreur de programmation. Aucune information supplémentaire n’est disponible à partir de SQLGetDiagRec ou DE SQLGetDiagField. Ce code est retourné uniquement lorsque le handle est un pointeur Null ou est le type incorrect, par exemple lorsqu’un handle d’instruction est passé pour un argument qui nécessite un handle de connexion.
SQL_NO_DATA Aucune autre donnée n’a été disponible. L’application appelle SQLGetDiagRec ou SQLGetDiagField pour récupérer des informations supplémentaires. Un ou plusieurs enregistrements d’état définis par le pilote dans la classe 02xxx peuvent être retournés. Remarque : dans ODBC 2.x, ce code de retour a été nommé SQL_NO_DATA_FOUND.
SQL_NEED_DATA D’autres données sont nécessaires, par exemple lorsque les données de paramètre sont envoyées au moment de l’exécution ou si des informations de connexion supplémentaires sont requises. L’application appelle SQLGetDiagRec ou SQLGetDiagField pour récupérer des informations supplémentaires, le cas échéant.
SQL_STILL_EXECUTING Une fonction démarrée de façon asynchrone est toujours en cours d’exécution. L’application appelle SQLGetDiagRec ou SQLGetDiagField pour récupérer des informations supplémentaires, le cas échéant.