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