2009-07-20 11 views

Respuesta

11

Crea un cursor para la consulta, que le permite iterar sobre el conjunto de resultados sin obtener todo el resultado a la vez. Un scrollable cursor, específicamente, es aquel que permite la iteración hacia atrás.

Ejemplos de uso Puede desplazarse hacia adelante hasta que encuentre el registro que necesita y iterar volver a buscar los registros anteriores, si los necesita, también.

+2

Si planea usarlos, también debe consultar la documentación (actual) de dbms para saber qué tipo de cursor usaría. Para algunos, la versión desplazable es mucho más "cara" que un cursor de solo avance, o incluso no está disponible. – VolkerK

7

Wikipedia da esto:

con un cursor no desplazable, también conocido como de sólo avance, uno puede FETCH cada fila a lo sumo una vez, y el cursor mueve automáticamente a la inmediatamente siguiente fila. Una operación de recuperación después de la última fila se ha recuperado coloca el cursor después de la última fila y devuelve SQLSTATE 02000 (SQLCODE +100).

Y esto:

Un programa puede posicionar un cursor desplazable en cualquier parte del conjunto de resultados mediante la instrucción FETCH SQL.

debería leer el artículo enlazado antes, pero esto se ve como algo de información interesante también:

cursores desplazables pueden potencialmente acceso a la misma fila del conjunto de resultados varias veces. Así, los datos modificaciones (insertar, actualizar, eliminar operaciones) de otras transacciones podrían tener un impacto en el conjunto de resultados .

En PHP, puede utilizar los cursores desplazables con DOP mediante el uso de declaraciones preparadas (ver PDOStatement::fetch):

para solicitar un cursor desplazable para su objeto PDOStatement, debe establecer la DOP :: ATTR_CURSOR atributo a PDO :: CURSOR_SCROLL cuando se prepara la instrucción SQL con PDO :: prepare().

(hay también un ejemplo más abajo en esa página)

Lo que parece interesante es la capacidad de "scroll" a través del conjunto de resultados, sin tener que obtener todos los datos en la memoria para iterar sobre ella.

1

para MySQL ... not supported = no disponible (ni MySQL (i) ni DOP):

mysqli_result :: data_seek(), tenga en cuenta que el manual indica: "Esta función sólo se puede utilizar con tamponada resultados obtenidos de la utilización de la() funciones mysqli_store_result() o mysqli_query."Es decir, la búsqueda tiene lugar en una copia almacenada en caché localmente del conjunto de resultados: no en el servidor. Por lo tanto, no admite ninguna sugerencia de" cursor desplazable "

Cuestiones relacionadas