Compartir por


Códigos de retorno de ODBC

Cada función de ODBC devuelve un código, conocido como código de retorno, que indica el éxito o el error generales de la función. La lógica del programa se suele basar en códigos de retorno.

Por ejemplo, el código siguiente llama a SQLFetch para recuperar las filas de un conjunto de resultados. Comprueba el código de retorno de la función para determinar si se alcanzó el final del conjunto de resultados (SQL_NO_DATA), si se devolvió información de advertencia (SQL_SUCCESS_WITH_INFO) o si se produjo un error (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.  
}  

El código de retorno SQL_INVALID_HANDLE siempre indica un error de programación y nunca debe encontrarse durante la ejecución. Todos los demás códigos de retorno proporcionan información en tiempo de ejecución, aunque SQL_ERROR puede indicar un error de programación.

La siguiente tabla define los códigos de retorno.

Código devuelto Descripción
SQL_SUCCESS Función completada correctamente. La aplicación llama a SQLGetDiagField para recuperar información adicional del registro de encabezado.
SQL_SUCCESS_WITH_INFO Función completada correctamente, posiblemente con un error no fatal (advertencia). La aplicación llama a SQLGetDiagRec o SQLGetDiagField para recuperar información adicional.
SQL_ERROR Se ha producido un error en la función. La aplicación llama a SQLGetDiagRec o SQLGetDiagField para recuperar información adicional. El contenido de los argumentos de salida de la función no está definido.
SQL_INVALID_HANDLE Se ha producido un error en la función debido a un identificador de entorno, conexión, instrucción o descriptor no válido. Esto indica un error de programación. No hay información adicional disponible en SQLGetDiagRec o SQLGetDiagField. Este código solo se devuelve cuando el identificador es un puntero nulo o es el tipo incorrecto, como cuando se pasa un identificador de instrucción para un argumento que requiere un identificador de conexión.
SQL_NO_DATA No hay más datos disponibles. La aplicación llama a SQLGetDiagRec o SQLGetDiagField para recuperar información adicional. Pueden devolverse uno o varios registros de estado definidos por los controladores de la clase 02xxx. Nota: En ODBC 2.x, este código de retorno se denominaba SQL_NO_DATA_FOUND.
SQL_NEED_DATA Se necesitan más datos, como cuando se envían datos de parámetros en tiempo de ejecución o se requiere información adicional de conexión. La aplicación llama a SQLGetDiagRec o SQLGetDiagField para recuperar información adicional, si existe.
SQL_STILL_EXECUTING Una función que se inició de forma asincrónica sigue ejecutándose. La aplicación llama a SQLGetDiagRec o SQLGetDiagField para recuperar información adicional, si existe.