Compartir por


Cursores estáticos ODBC

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

Los cursores estáticos pueden detectar sus propias operaciones de inserción, actualización y eliminación, aunque no está obligados a hacerlo. Si un determinado cursor estático 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 en 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 ofrece 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 para realizar y puede variar de los datos subyacentes a medida que otros usuarios cambian esos datos.