Cursores ODBC

Una aplicación captura datos con un cursor. Un cursor es diferente de un conjunto de resultados: un conjunto de resultados es el conjunto de filas que coincide con determinados criterios de búsqueda, mientras que un cursor es el software que devuelve esas filas a la aplicación. El nombre cursor, tal como se aplica a las bases de datos, probablemente se originó a partir del cursor parpadeante en un terminal informático. Al igual que ese cursor indica la posición actual en la pantalla y dónde aparecerán las palabras que se escriban a continuación, un cursor en un conjunto de resultados indica la posición actual en el conjunto de resultados y qué fila se devolverá a continuación.

El modelo de cursor en ODBC se basa en el modelo de cursor en SQL incrustado. Una diferencia destacable entre estos modelos es la forma en que se abren los cursores. En SQL insertado, para poder usar un cursor, se debe declarar y abrir explícitamente. En ODBC, un cursor se abre implícitamente cuando se ejecuta una instrucción que crea un conjunto de resultados. Cuando se abre el cursor, se ubica antes de la primera fila del conjunto de resultados. Tanto en SQL insertado como en ODBC, un cursor se debe cerrar después de que la aplicación haya terminado de usarla.

Los distintos cursores tienen características diferentes. El tipo de cursor más común, que se denomina cursor de solo avance, solo puede avanzar a través del conjunto de resultados. Para volver a una fila anterior, la aplicación debe cerrar el cursor y volver a abrirlo y, a continuación, leer las filas desde el principio del conjunto de resultados hasta llegar a la fila necesaria. Los cursores de solo avance ofrecen un mecanismo rápido para un tránsito unidireccional por un conjunto de resultados.

Los cursores de solo avance son menos útiles para las aplicaciones basadas en pantalla, en las que el usuario se desplaza por los datos hacia atrás y hacia adelante. Para usar un cursor de solo avance, estas aplicaciones pueden leer el conjunto de resultados una vez, almacenar en caché los datos localmente y desplazarse por sí mismas. Sin embargo, esto solo funciona bien con pequeñas cantidades de datos. Una mejor solución es usar un cursor desplazable, que brinda acceso aleatorio al conjunto de resultados. Estas aplicaciones también pueden aumentar el rendimiento mediante la captura de más de una fila de datos a la vez, mediante lo que se denomina cursor de bloque. Para obtener más información sobre los cursores de bloque, consulte Uso de cursores de bloque.

El cursor de solo avance es el tipo de cursor predeterminado en ODBC y se describe en las secciones siguientes. Para obtener más información sobre los cursores de bloque y los cursores desplazables, consulte Cursores de bloque y Cursores desplazables.

Importante

Confirmar o revertir una transacción, ya sea llamando explícitamente a SQLEndTran o trabajando en modo de confirmación automática, hace que algunos orígenes de datos cierren todos los cursores de todas las instrucciones de una conexión. Para obtener más información, consulte los atributos SQL_CURSOR_COMMIT_BEHAVIOR y SQL_CURSOR_ROLLBACK_BEHAVIOR en la descripción de la función SQLGetInfo.