Códigos de retorno ODBC

Cada função no ODBC retorna um código, conhecido como seu código de retorno, que indica o sucesso ou a falha geral da função. Em geral, a lógica de programação se baseia em códigos de retorno.

Como um exemplo, o código a seguir chama SQLFetch para recuperar as linhas em um conjunto de resultados. Ele verifica o código de retorno da função para determinar se o final do conjunto de resultados foi alcançado (SQL_NO_DATA), se alguma informação de aviso foi retornada (SQL_SUCCESS_WITH_INFO) ou se ocorreu um erro (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.  
}  

O código de retorno SQL_INVALID_HANDLE sempre indica um erro de programação e nunca deve ser encontrado em tempo de execução. Todos os outros códigos de retorno fornecem informações, embora SQL_ERROR possa indicar um erro de programação.

A tabela a seguir define os códigos de retorno.

Código de retorno Descrição
SQL_SUCCESS Função concluída com êxito. O aplicativo chama SQLGetDiagField para recuperar mais informações do registro de cabeçalho.
SQL_SUCCESS_WITH_INFO Função concluída com êxito, possivelmente com um erro não fatal (aviso). O aplicativo chama SQLGetDiagRec ou SQLGetDiagField para recuperar mais informações.
SQL_ERROR Falha na função. O aplicativo chama SQLGetDiagRec ou SQLGetDiagField para recuperar mais informações. O conteúdo de qualquer argumento de saída para a função é indefinido.
SQL_INVALID_HANDLE Falha na função devido a um identificador do descritor, instrução, conexão ou ambiente inválido. Isso indica um erro de programação. Não há nenhuma informação adicional disponível em SQLGetDiagRec ou SQLGetDiagField. Esse código é retornado apenas quando o identificador é um ponteiro nulo ou é do tipo errado, como quando um identificador de instrução é passado para um argumento que exige um identificador de conexão.
SQL_NO_DATA Não havia mais dados disponíveis. O aplicativo chama SQLGetDiagRec ou SQLGetDiagField para recuperar mais informações. Podem ser retornados um ou mais registros de status definidos pelo driver na classe 02xxx. Nota: no ODBC 2.x, esse código de retorno se chamava SQL_NO_DATA_FOUND.
SQL_NEED_DATA São necessários mais dados, como quando os dados de parâmetro são enviados no momento da execução ou é preciso obter informações de conexão adicionais. O aplicativo chama SQLGetDiagRec ou SQLGetDiagField para recuperar mais informações, se houver.
SQL_STILL_EXECUTING Uma função que foi iniciada de forma assíncrona ainda está em execução. O aplicativo chama SQLGetDiagRec ou SQLGetDiagField para recuperar mais informações, se houver.