Partager via


Extraction et défilement

L'opération consistant à extraire une ligne d'un curseur est appelée extraction (fetch). Les options d'extraction sont les suivantes :

  • FETCH FIRST

    Extrait la première ligne du curseur.

  • FETCH NEXT

    Extrait la ligne qui suit la dernière ligne extraite.

  • FETCH PRIOR

    Extrait la ligne qui précède la dernière ligne extraite.

  • FETCH LAST

    Extrait la dernière ligne du curseur.

  • FETCH ABSOLUTE n

    Extrait la nième ligne à partir de la première ligne du curseur si n est un entier positif. Extrait les lignes se trouvant n lignes avant la fin du curseur si n est un entier négatif. Aucune ligne n'est extraite si n a la valeur 0.

  • FETCH RELATIVE n

    Extrait la ligne se trouvant à n lignes à partir de la dernière ligne extraite. Extrait la ligne se trouvant n lignes après la dernière ligne extraite si n est positif. Extrait la ligne se trouvant n lignes avant la dernière ligne extraite si n est négatif. Extrait à nouveau la même ligne si n a la valeur 0.

À l'ouverture d'un curseur, la position de la ligne courante dans le curseur se trouve logiquement avant la première ligne. Les différentes options d'extraction ont par conséquent les comportements suivants s'il s'agit de la première extraction opérée après l'ouverture du curseur :

  • FETCH FIRST

    Extrait la première ligne du curseur.

  • FETCH NEXT

    Extrait la première ligne du curseur.

  • FETCH PRIOR

    N'extrait aucune ligne.

  • FETCH LAST

    Extrait la dernière ligne du curseur.

  • FETCH ABSOLUTE n

    Extrait la nième ligne à partir de la première ligne du curseur si n est un entier positif. Extrait la ligne se trouvant n lignes avant la fin du curseur (par exemple, n = -1 retourne la dernière ligne du curseur) si n est un entier négatif. Aucune ligne n'est extraite si n a la valeur 0.

  • FETCH RELATIVE n

    Extrait la nième ligne du curseur si n est positif. Aucune ligne n'est extraite si n est négatif ou a la valeur 0.

Les curseurs Transact-SQL ne peuvent extraire qu'une ligne à la fois. Les curseurs de serveur API permettent d'extraire des blocs de lignes à chaque extraction. Un curseur prenant en charge l'extraction de plusieurs lignes à la fois est appelé curseur de bloc.

Classifications des curseurs

Il est possible de classifier un curseur en fonction des options d'extraction qu'il prend en charge :

  • Avant uniquement

    Les lignes doivent être extraites en séquence, de la première à la dernière. FETCH NEXT est la seule opération d'extraction autorisée.

  • Défilement

    Les lignes peuvent être extraites de manière aléatoire à partir d'un emplacement quelconque du curseur. Toutes les opérations d'extraction sont autorisées (à une exception près : les curseurs dynamiques ne prennent pas en charge l'option FETCH ABSOLUTE).

Les curseurs permettant le défilement (SCROLLABLE) sont particulièrement utiles pour la prise en charge d'applications en ligne. Un curseur peut être mappé sur une grille ou sur une zone de liste de l'application. Étant donné que le curseur permet le déplacement vers le haut et vers le bas ainsi que dans toute la grille, l'application utilise le défilement pour extraire les lignes du curseur que l'utilisateur souhaite visualiser.

API d'extraction de lignes

Les API d'extraction de lignes utilisées avec les instructions, les fonctions ou les méthodes réelles portent différents noms :

  • Les curseurs Transact-SQL utilisent les instructions FETCH FIRST, FETCH LAST, FETCH NEXT, FETCH PRIOR, FETCH ABSOLUTE(n) et FETCH RELATIVE(n).

  • OLE DB utilise des méthodes telles que IRowset::GetNextRows, IRowsetLocate::GetRowsAt, IRowsetLocate::GetRowsAtBookmark et IRowsetScroll::GetRowsAtRatio.

  • ODBC utilise la fonction SQLFetch, qui est identique à une instruction FETCH NEXT pour une ligne, ou la fonction SQLFetchScroll. SQLFetchScroll prend en charge les curseurs de bloc et l'ensemble des options d'extraction (first, last, next, prior, absolute, relative).

  • ADO utilise les méthodes de RecordsetMove, MoveFirst, MoveLast, MoveNext et MovePrevious pour connaître une position dans un curseur. La méthode d'ensemble d'enregistrements GetRows est ensuite utilisée pour extraire une ou plusieurs lignes à cette position. Cette méthode peut également être appelée directement à l'aide du paramètre Start auquel le numéro de la ligne à extraire a été attribué.