Codici restituiti ODBC

Ogni funzione in ODBC restituisce un codice, noto come codice restituito, che indica l'esito positivo o negativo complessivo della funzione. La logica del programma si basa generalmente sui codici restituiti.

Ad esempio, il codice seguente chiama SQLFetch per recuperare le righe in un set di risultati. Controlla il codice restituito della funzione per stabilire se è stata raggiunta la fine del set di risultati (SQL_NO_DATA), se sono state restituite informazioni di avviso (SQL_SUCCESS_WITH_INFO) o se si è verificato un errore (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.  
}  

Il codice restituito SQL_INVALID_HANDLE indica sempre un errore di programmazione e non dovrebbe essere mai rilevato in fase di esecuzione. Tutti gli altri codici restituiti forniscono informazioni di runtime, anche se SQL_ERROR potrebbe indicare un errore di programmazione.

Nella tabella seguente vengono definiti i codici restituiti.

Codice restituito Descrizione
SQL_SUCCESS La funzione è stata completata. L'applicazione chiama SQLGetDiagField per recuperare informazioni aggiuntive dal record di intestazione.
SQL_SUCCESS_WITH_INFO La funzione è stata completata, possibilmente con un errore non irreversibile (avviso). L'applicazione chiama SQLGetDiagRec o SQLGetDiagField per recuperare informazioni aggiuntive.
SQL_ERROR La funzione ha avuto esito negativo. L'applicazione chiama SQLGetDiagRec o SQLGetDiagField per recuperare informazioni aggiuntive. Il contenuto degli argomenti di output per la funzione non è definito.
SQL_INVALID_HANDLE La funzione ha avuto esito negativo a causa di un handle di ambiente, connessione, istruzione o descrittore non valido. Ciò indica un errore di programmazione. Non sono disponibili informazioni aggiuntive da SQLGetDiagRec o SQLGetDiagField. Questo codice viene restituito solo quando l'handle è un puntatore Null o è di tipo errato, ad esempio quando viene passato un handle di istruzione per un argomento che richiede un handle di connessione.
SQL_NO_DATA Dati disponibili esauriti. L'applicazione chiama SQLGetDiagRec o SQLGetDiagField per recuperare informazioni aggiuntive. È possibile che vengano restituiti uno o più record di stato definiti dal driver nella classe 02xxx. Nota: in ODBC 2.x, questo codice restituito è stato denominato SQL_NO_DATA_FOUND.
SQL_NEED_DATA Sono necessari più dati, ad esempio quando i dati dei parametri vengono inviati in fase di esecuzione o sono necessarie informazioni aggiuntive sulla connessione. L'applicazione chiama SQLGetDiagRec o SQLGetDiagField per recuperare informazioni aggiuntive, se presenti.
SQL_STILL_EXECUTING Una funzione avviata in modo asincrono è ancora in esecuzione. L'applicazione chiama SQLGetDiagRec o SQLGetDiagField per recuperare informazioni aggiuntive, se presenti.