Qu'est-ce que PDO curseur scrollable?

qu'est-Ce que "récupération des lignes avec un curseur scrollable"?

17
demandé sur j0k 2009-07-20 22:45:22

3 réponses

Il crée un curseur pour la requête, qui vous permet d'itérer sur le jeu de résultats sans chercher le résultat entier à la fois. curseur scrollable, en particulier, est un qui permet itérer à l'envers.

exemple d'utilisation: vous pouvez faire défiler vers l'avant jusqu'à ce que vous trouviez l'enregistrement dont vous avez besoin et itérer de nouveau pour récupérer les enregistrements précédents, Si vous en avez besoin, aussi.

14
répondu soulmerge 2009-07-20 18:50:13

Wikipédia donne :

avec un curseur non-scrollable, aussi connue comme avant uniquement, on peut aller CHERCHER chaque ligne plus d'une fois, et le curseur déplace automatiquement vers le immédiatement ligne suivante. Une opération de récupération après la dernière rangée a été récupérée positionne le curseur après la dernière ligne et retourne SQLSTATE 02000 (SQLCODE +100).

Et ça :

UN programme peut positionner une scrollable curseur n'importe où dans le jeu de résultats en utilisant la déclaration FETCH SQL.

Vous devriez lire l'article plus tôt, mais cela ressemble à quelques informations intéressantes :

Les curseurs scrollables peuvent potentiellement accéder à la même ligne du jeu de résultats à de multiples reprises. Ainsi, les données modifications (insérer, mettre à jour, supprimer) opérations) provenant d'autres opérations pourrait avoir un impact sur le résultat définir.

en PHP, vous pouvez utiliser les curseurs scrollables avec AOP en utilisant des instructions préparées (voir PDOStatement::fetch):

pour demander un curseur scrollable pour votre objet PDOStatement, vous devez définir l'attribut PDO:: ATTR_CURSOR à PDO:: CURSOR_SCROLL lorsque vous préparez la déclaration SQL avec PDO:: prepare ().

(il y a aussi un exemple plus bas dans la page)

Ce qui semble intéressant est la possibilité de passer d'un jeu de résultats, sans avoir à obtenir toutes les données en mémoire pour itérer sur elle.

7
répondu Pascal MARTIN 2009-07-20 18:53:16

Pour Mysql ... non supporté = non disponible (ni mysql (i) ni PDO):

mysqli_result:: data_seek(), notez que le manuel stipule: "Cette fonction ne peut être utilisée qu'avec des résultats tamponnés obtenus à partir de l'utilisation des fonctions mysqli_store_result() ou mysqli_query ()." C'est-à-dire que la recherche a lieu sur une copie mise en cache locale du jeu de résultats: pas sur le serveur. Il ne supporte donc pas la suggestion d'un "curseur scrollable".

2
répondu djot 2013-09-29 10:09:20