Función SQLCloseCursor

Conformidad
Versión introducida: Normas ODBC 3.0 Cumplimiento: ISO 92

Summary
SQLCloseCursor cierra un cursor que se ha abierto sobre una instrucción y descarta los resultados pendientes.

Sintaxis

  
SQLRETURN SQLCloseCursor(  
     SQLHSTMT     StatementHandle);  

Argumentos

StatementHandle
[Entrada] Identificador de instrucciones.

Devoluciones

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnósticos

Cuando SQLCloseCursor devuelve SQL_ERROR o SQL_SUCCESS_WITH_INFO, se puede obtener un valor SQLSTATE asociado llamando a SQLGetDiagRec con un HandleType de SQL_HANDLE_STMT y un Handle de StatementHandle. La siguiente tabla enumera los valores SQLSTATE que comúnmente devuelve SQLCloseCursor y explica cada uno en el contexto de esta función; la notación "(DM)" precede a las descripciones de los SQLSTATE devueltas por el Driver Manager. El código de retorno asociado a cada valor SQLSTATE es SQL_ERROR, a menos que se indique lo contrario.

SQLSTATE Error Description
01000 Advertencia general Mensaje informativo específico del controlador. (Function devuelve SQL_SUCCESS_WITH_INFO).
24000 Estado de cursor no válido No había cursor abierto en el HandleStatement. (Esto solo se devuelve mediante un ODBC 3. x conductor.)
HY000 Error genérico Se produjo un error para el que no había ningún SQLSTATE específico y para el que no se definió SQLSTATE específico de la implementación. El mensaje de error devuelto por SQLGetDiagRec en el búfer *MessageText describe el error y su causa.
HY001 Error de asignación de memoria El controlador no pudo asignar memoria necesaria para admitir la ejecución o finalización de la función.
HY010 Error de secuencia de funciones (DM) Se llamaba una función de ejecución asíncrona para el handle de conexión asociado al StatementHandle y seguía ejecutándose cuando se llamaba a esta función.

(DM) Se llamó a una función de ejecución asincrónica para statementHandle y todavía se estaba ejecutando cuando se llamó a esta función.

(DM) SE llamó a SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos para el statementHandle y devolvió SQL_NEED_DATA. Se llamó a esta función antes de enviar datos para todos los parámetros o columnas de datos en ejecución.
HY013 Error de administración de memoria No se pudo procesar la llamada de función porque no se pudo tener acceso a los objetos de memoria subyacentes, posiblemente debido a condiciones de memoria baja.
HY117 La conexión se suspende debido al estado de transacción desconocido. Solo se permiten las funciones de desconexión y solo lectura. (DM) Para obtener más información sobre el estado suspendido, vea Función SQLEndTran.
HYT01 Se ha agotado el tiempo de espera de la conexión. El período de tiempo de espera de conexión expiró antes de que el origen de datos respondiera a la solicitud. El período de tiempo de espera de conexión se establece a través de SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 El controlador no admite esta función (DM) El controlador asociado a StatementHandle no admite la función .

Comments

SQLCloseCursor devuelve SQLSTATE 24000 (estado del cursor inválido) si no hay cursor abierto. Llamar a SQLCloseCursor es equivalente a llamar a SQLFreeStmt con la opción SQL_CLOSE, con la excepción de que SQLFreeStmt con SQL_CLOSE no tiene efecto en la aplicación si no hay cursor abierto en la sentencia, mientras que SQLCloseCursor devuelve SQLSTATE 24000 (estado del cursor inválido).

Note

Si es un ODBC 3. x aplicación funcionando con un ODBC 2. x llama a SQLCloseCursor cuando no hay cursor abierto, SQLSTATE 24000 (estado del cursor inválido) no se devuelve, porque el Driver Manager asigna SQLCloseCursor a SQLFreeStmt con SQL_CLOSE.

Para más información, véase Cerrar el Cursor.

Ejemplo de código

Consulta la función SQLBrowseConnect y la función SQLConnect.

Para obtener información sobre Vea
Cancelación del procesamiento de instrucciones Función SQLCancel
Liberar un mango Función SQLFreeHandle
Procesamiento de conjuntos de resultados múltiples Función SQLMoreResults