FETCH

Prise en charge à partir d’Oracle 12c, cette syntaxe limite le nombre de lignes renvoyées par une requête pour réaliser la pagination, elle correspond au LIMIT de MySQL.

Syntaxe complète

[ OFFSET offset ROWS ]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]Langage du code : CSS (css)
1. Clause OFFSET (optionnel)

Rôle:ignorer les N premières lignes, utilisé pour la pagination.

  • Si omis, le décalage vaut 0 : la lecture commence à la première ligne
  • Décalage négatif : traité comme la valeur 0
  • Décalage NULL ou supérieur au nombre total de lignes : aucune ligne n’est retournée
  • Décalage avec décimales : la partie décimale est tronquée, seule la partie entière est conservée
2. Clause FETCH

Rôle : définir combien de lignes renvoyer, deux modes disponibles : par nombre de lignes ou par pourcentage.

  • ONLY : renvoie exactement le nombre de lignes indiqué (le plus utilisé)
  • WITH TIES : renvoie aussi les enregistrements ayant la même valeur de tri que la dernière ligne récupérée. À utiliser impérativement avec ORDER BY

Exemples de code

Récupérer les 5 premiers enregistrements triés par name décroissant
SELECT *
FROM student
ORDER BY name DESC
FETCH NEXT 5 ROWS ONLY;
Obtenir les 2 premières lignes
select * from student fetch next 2 rows only;Langage du code : JavaScript (javascript)

Résultat : retourne les deux premiers enregistrements jim, lisa.

Pagination : ignorer 3 lignes, lire 4 lignes (page 2, 4 éléments par page)
SELECT *
FROM student
ORDER BY id
OFFSET 3 ROWS
FETCH NEXT 4 ROWS ONLY;
Retour par pourcentage, récupérer 10 % des données totales
SELECT *
FROM student
FETCH NEXT 10 PERCENT ROWS ONLY;
Utilisation de WITH TIES (inclure les ex‑æquo)
SELECT *
FROM student
ORDER BY score DESC
FETCH NEXT 3 ROWS WITH TIES;

Si plusieurs enregistrements partagent le même score que la 3ᵉ place, ils sont tous renvoyés, le nombre de résultats peut être supérieur à 3.

FETCH

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *