Compartir a través de


Cursores Estáticos ODBC

Un cursor estático es uno en el que el conjunto de resultados parece ser estático. Normalmente no detecta cambios realizados en la pertenencia, el orden o los valores del conjunto de resultados después de abrir el cursor. Por ejemplo, supongamos que un cursor estático captura una fila y otra aplicación actualiza esa fila. Si el cursor estático vuelve a capturar la fila, los valores que ve no se modifican, a pesar de los cambios realizados por la otra aplicación.

Los cursores estáticos pueden detectar sus propias actualizaciones, eliminaciones e inserciones, aunque no son necesarios para hacerlo. Si un cursor estático determinado detecta estos cambios se notifica a través de la opción SQL_STATIC_SENSITIVITY en SQLGetInfo. Los cursores estáticos nunca detectan otras actualizaciones, eliminaciones e inserciones.

La matriz de estado de fila especificada por el atributo de instrucción SQL_ATTR_ROW_STATUS_PTR puede contener SQL_ROW_SUCCESS, SQL_ROW_SUCCESS_WITH_INFO o SQL_ROW_ERROR para cualquier fila. Devuelve SQL_ROW_UPDATED, SQL_ROW_DELETED o SQL_ROW_ADDED para las filas actualizadas, eliminadas o insertadas por el cursor, suponiendo que el cursor pueda detectar dichos cambios.

Normalmente, los cursores estáticos se implementan bloqueando las filas del conjunto de resultados o realizando una copia o instantánea del conjunto de resultados. Aunque el bloqueo de filas es relativamente fácil de hacer, tiene el inconveniente de reducir significativamente la simultaneidad. La realización de una copia permite una mayor simultaneidad y permite que el cursor realice un seguimiento de sus propias actualizaciones, eliminaciones e inserciones modificando la copia. Sin embargo, una copia es más costosa de realizar y puede divergir de los datos subyacentes a medida que otros usuarios los cambian.