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. |