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
NULLou 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 avecORDER 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
Previous: Requête conditionnelle WHERE