Especificación: | CLI de DB2 5.0 | ODBC 3.0 | ISO CLI |
SQLFreeHandle() libera recursos asociados a un descriptor de entorno, conexión o sentencia específico.
Esta función es una función genérica para liberar recursos. Sustituye a SQLFreeConnect (para liberar un descriptor de conexión) y a SQLFreeEnv() (para liberar un descriptor de entorno). SQLFreeHandle() también sustituye a SQLFreeStmt() (con la opción SQL_DROP) para liberar un descriptor de sentencia.
Sintaxis
SQLRETURN SQLFreeHandle (SQLSMALLINT HandleType, SQLHANDLE Handle);
Argumentos de la función
Tabla 60. Argumentos de SQLFreeHandle
Tipo de datos | Argumento | Uso | Descripción |
---|---|---|---|
SQLSMALLINT | HandleType | entrada | El tipo de descriptor de contexto que debe ser liberado por
SQLFreeHandle(). Debe ser uno de los valores
siguientes:
|
SQLHANDLE | Handle | entrada | El nombre del descriptor de contexto que se debe liberar. |
Uso
SQLFreeHandle() se utiliza para liberar descriptores de contexto para entornos, conexiones y sentencias.
Una vez liberado un descriptor de contexto, no debe ser utilizado por una aplicación; CLI de DB2 no comprueba la validez de un descriptor de contexto en una llamada a función.
Liberación de un descriptor de entorno
Antes de llamar a SQLFreeHandle() con un HandleType de SQL_HANDLE_ENV, una aplicación debe llamar a SQLFreeHandle() con un HandleType de SQL_HANDLE_DBC para todas las conexiones asignadas bajo el entorno. De lo contrario, la llamada a SQLFreeHandle() devuelve SQL_ERROR y el entorno y las conexiones activas que haya siguen siendo válidos.
Liberación de un descriptor de conexión
Antes de invocar SQLFreeHandle() con HandleType establecido en SQL_HANDLE_DBC, la aplicación debe invocar SQLDisconnect() para la conexión. De lo contrario, la llamada a SQLFreeHandle() devuelve SQL_ERROR y la conexión sigue siendo válida.
Liberación de un descriptor de sentencia
La llamada a SQLFreeHandle() con HandleType establecido en SQL_HANDLE_STMT libera todos los recursos que fueron asignados por una llamada a SQLAllocHandle() con HandleType establecido en SQL_HANDLE_STMT. Cuando una aplicación invoca SQLFreeHandle() para liberar una sentencia que tiene resultados pendientes, éstos se eliminan. Si hay resultados pendientes cuando se invoca SQLFreeHandle(), se descartan los conjuntos resultantes.
SQLDisconnect() descarta automáticamente las sentencias que estén abiertas en la conexión.
Códigos de retorno
Si SQLFreeHandle() devuelve SQL_ERROR, el descriptor de contexto es válido todavía.
Diagnósticos
Tabla 61. SQLSTATE de SQLFreeHandle
SQLSTATE | Descripción | Explicación |
---|---|---|
01000 | Aviso. | Mensaje informativo. (La función devuelve SQL_SUCCESS_WITH_INFO). |
08S01 | Error en el enlace de comunicaciones. | El argumento HandleType es SQL_HANDLE_DBC, y el enlace de comunicaciones entre CLI de DB2 y la fuente de datos con el que estaba intentando conectar ha fallado antes de que la función terminara su proceso. |
HY000 | Error general. | Se ha producido un error para el que no existe ningún SQLSTATE específico. El mensaje de error devuelto por SQLGetDiagRec() en el almacenamiento intermedio *MessageText describe el error y su causa. |
HY001 | Error de asignación de memoria. | CLI de DB2 no puede asignar la memoria necesaria para ejecutar o finalizar la función. |
HY010 | Error de secuencia de función. | El argumento HandleType es SQL_HANDLE_ENV y el estado de al
menos una conexión es asignado o conectado. Antes de llamar a
SQLFreeHandle() con un HandleType de SQL_HANDLE_ENV, se
debe llamar para cada conexión a SQLDisconnect() y
SQLFreeHandle() con un HandleType de
SQL_HANDLE_DBC. El argumento HandleType es SQL_HANDLE_DBC, y
se llama a la función antes de llamar a SQLDisconnect() para la
conexión.
El argumento HandleType es SQL_HANDLE_STMT; se llamó a SQLExecute() o SQLExecDirect() con el descriptor de contexto de sentencia, y la función devolvió SQL_NEED_DATA. (DM) Todos los descriptores de contexto auxiliares y otros recursos no se liberaron antes de llamar a SQLFreeHandle(). |
HY013 | Error inesperado de gestión de la memoria. | El argumento HandleType es SQL_HANDLE_STMT y no se pudo procesar la llamada a la función debido a que no se pudo acceder a los objetos de memoria asociados, posiblemente debido a una falta de memoria. |
HY017 | Utilización no válida de un descriptor de contexto de descriptor asignado automáticamente. | El argumento Handle se establece en el descriptor de contexto para un descriptor asignado automáticamente o para un descriptor de implementación. |
Restricciones
Ninguna.
Consulta relacionada