Partilhar via


Códigos de retorno ODBC

Cada função no ODBC devolve um código, conhecido como código de retorno, que indica o sucesso ou fracasso global da função. A lógica do programa baseia-se geralmente em códigos de retorno.

Por exemplo, o código seguinte chama SQLFetch para recuperar as linhas de um conjunto de resultados. Verifica o código de retorno da função para determinar se o fim do conjunto de resultados foi atingido (SQL_NO_DATA), se alguma informação de aviso foi devolvida (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 indica sempre um erro de programação e nunca deve ser encontrado em tempo de execução. Todos os outros códigos de retorno fornecem informação em tempo de execução, embora SQL_ERROR possam indicar um erro de programação.

A tabela seguinte define os códigos de retorno.

Código de retorno Description
SQL_SUCCESS Função concluída com sucesso. A aplicação chama SQLGetDiagField para recuperar informação adicional do registo do cabeçalho.
SQL_SUCCESS_WITH_INFO Função concluída com sucesso, possivelmente com um erro não fatal (aviso). A aplicação chama SQLGetDiagRec ou SQLGetDiagField para obter informação adicional.
SQL_ERROR A função falhou. A aplicação chama SQLGetDiagRec ou SQLGetDiagField para obter informação adicional. O conteúdo de quaisquer argumentos de saída da função é indefinido.
SQL_INVALID_HANDLE A função falhou devido a um handle de ambiente, conexão, instrução ou descritor inválido. Isto indica um erro de programação. Não está disponível informação adicional em SQLGetDiagRec ou SQLGetDiagField. Este código é devolvido apenas quando o handle é um ponteiro nulo ou é do tipo errado, como quando um handle de instrução é passado para um argumento que requer um handle de conexão.
SQL_NO_DATA Não havia mais dados disponíveis. A aplicação chama SQLGetDiagRec ou SQLGetDiagField para obter informação adicional. Um ou mais registos de estado definidos pelo controlador na classe 02xxx podem ser retornados. Nota: No ODBC 2. X, este código de retorno foi chamado SQL_NO_DATA_FOUND.
SQL_NEED_DATA São necessários mais dados, como quando os dados dos parâmetros são enviados na altura da execução ou quando é necessária informação adicional de ligação. A aplicação chama SQLGetDiagRec ou SQLGetDiagField para obter informação adicional, se houver.
SQL_STILL_EXECUTING Uma função que foi iniciada de forma assíncrona continua a ser executada. A aplicação chama SQLGetDiagRec ou SQLGetDiagField para obter informação adicional, se houver.