Maison base de données Oracle Comment écrire une pagination dans Oracle

Comment écrire une pagination dans Oracle

Apr 04, 2023 pm 01:59 PM

Oracle est un système de gestion de base de données relationnelle très populaire qui fournit de riches fonctions de langage SQL, notamment des instructions OFFSET et FETCH pour la pagination. Dans le développement réel, nous devons souvent utiliser la pagination pour optimiser l'efficacité des requêtes et améliorer l'expérience utilisateur. Cet article explique comment implémenter la fonction de pagination dans Oracle.

1. Utilisez ROWNUM pour la pagination

Oracle dispose d'une pseudo-colonne ROWNUM intégrée, qui attribue des nombres numériques dans l'ordre et peut être utilisée pour les opérations de pagination. Nous pouvons obtenir l'ensemble des résultats via une requête, puis utiliser ROWNUM pour filtrer les données avec le numéro de page et le numéro d'enregistrement spécifiés.

Par exemple, supposons que nous ayons une table nommée EMPLOYEE et que nous devions interroger la page 2 et afficher 10 enregistrements sur chaque page. Vous pouvez utiliser l'instruction SQL suivante pour implémenter la pagination.

SELECT *
FROM (
  SELECT ROWNUM rn, e.*
  FROM EMPLOYEE e
  WHERE ROWNUM <= :page * :pageSize
)
WHERE rn > (:page - 1) * :pageSize
Copier après la connexion

Parmi eux, :page et :pageSize sont des paramètres, indiquant le numéro de page à interroger et le nombre d'enregistrements affichés sur chaque page. Le processus spécifique de cette instruction SQL est le suivant :

  1. La requête interne trie d'abord les enregistrements de la table EMPLOYEE en fonction de la taille ROWNUM, et attribue un numéro ROWNUM à chaque enregistrement.
  2. La requête externe opère ensuite sur l'ensemble de résultats de la requête interne, en utilisant WHERE rn > (:page - 1) * :pageSize pour filtrer les données avec le numéro de page et le numéro d'enregistrement spécifiés.

Étant donné que ROWNUM est alloué après le tri, la requête interne doit d'abord trier les données, sinon les résultats de la pagination seront incertains.

Il convient de noter que si le résultat de la requête ne comporte qu'un seul enregistrement, l'utilisation de l'instruction SQL ci-dessus peut rendre l'ensemble de résultats vide. La solution est de changer WHERE rn > (:page - 1) :pageSize en WHERE rn BETWEEN ((:page - 1) :pageSize + 1) AND (:page * :pageSize).

2. Utilisez la pagination OFFSET et FETCH

À partir d'Oracle 12c, il prend en charge la pagination à l'aide des instructions OFFSET et FETCH. Cette méthode ne nécessite pas l'utilisation de ROWNUM et la syntaxe est plus concise et claire. Voici un exemple d'utilisation de OFFSET et FETCH pour implémenter la pagination :

SELECT *
FROM EMPLOYEE
ORDER BY emp_id
OFFSET (:page - 1) * :pageSize ROWS
FETCH NEXT :pageSize ROWS ONLY
Copier après la connexion

Parmi eux, :page et :pageSize représentent respectivement le numéro de page à interroger et le nombre d'enregistrements affichés sur chaque page. Le processus spécifique de cette instruction SQL est le suivant :

  1. Triez d'abord les enregistrements de la table EMPLOYEE selon emp_id.
  2. OFFSET (:page - 1) * :pageSize ROWS spécifie le nombre de lignes à ignorer, c'est-à-dire la position de l'enregistrement de départ à interroger dans la table triée.
  3. FETCH NEXT :pageSize ROWS ONLY spécifie le nombre d'enregistrements à interroger, c'est-à-dire le nombre d'enregistrements affichés sur chaque page.

Soyez prudent lorsque vous utilisez les instructions OFFSET et FETCH pour interroger. Si le nombre d'enregistrements interrogés est inférieur à une page, le résultat de la requête sera vide. Dans ce cas, nous devons calculer manuellement le nombre d'enregistrements restants et filtrer à l'aide de la clause WHERE.

3. Résumé

Ce qui précède présente deux méthodes pour implémenter la fonction de pagination dans la base de données Oracle : en utilisant ROWNUM et en utilisant OFFSET et FETCH. Les deux méthodes ont leurs propres avantages et inconvénients, et les développeurs peuvent choisir la méthode appropriée en fonction de scénarios d'application spécifiques.

Il convient de noter que afin d'améliorer l'efficacité des requêtes, des index appropriés doivent être utilisés lors de la pagination. Dans le même temps, si les résultats de la requête dépassent 1 000, la requête de pagination doit être convertie en requête par lots pour éviter de renvoyer trop de données dans une seule requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer des utilisateurs et des rôles dans Oracle? Comment créer des utilisateurs et des rôles dans Oracle? Mar 17, 2025 pm 06:41 PM

L'article explique comment créer des utilisateurs et des rôles dans Oracle à l'aide de commandes SQL, et discute des meilleures pratiques pour gérer les autorisations des utilisateurs, y compris l'utilisation des rôles, en suivant le principe des moindres privilèges et des audits réguliers.

Comment configurer le chiffrement dans Oracle à l'aide du chiffrement transparent des données (TDE)? Comment configurer le chiffrement dans Oracle à l'aide du chiffrement transparent des données (TDE)? Mar 17, 2025 pm 06:43 PM

L'article décrit les étapes pour configurer le chiffrement transparent des données (TDE) dans Oracle, détaillant la création du portefeuille, permettant le TDE et le chiffrement des données à différents niveaux. Il discute également des avantages de TDE comme la protection et la conformité des données, et comment Veri

Comment effectuer des sauvegardes en ligne dans Oracle avec un minimum de temps d'arrêt? Comment effectuer des sauvegardes en ligne dans Oracle avec un minimum de temps d'arrêt? Mar 17, 2025 pm 06:39 PM

L'article traite des méthodes pour effectuer des sauvegardes en ligne dans Oracle avec un minimum de temps d'arrêt en utilisant RMAN, les meilleures pratiques pour réduire les temps d'arrêt, assurer la cohérence des données et surveiller les progrès de la sauvegarde.

Comment utiliser le référentiel de charge de travail automatique (AWR) et le moniteur de diagnostic de base de données automatique (ADDM) dans Oracle? Comment utiliser le référentiel de charge de travail automatique (AWR) et le moniteur de diagnostic de base de données automatique (ADDM) dans Oracle? Mar 17, 2025 pm 06:44 PM

L'article explique comment utiliser AWR et ADDM d'Oracle pour l'optimisation des performances de la base de données. Il détaille la génération et l'analyse des rapports AWR, et l'utilisation d'ADDM pour identifier et résoudre les goulots d'étranglement des performances.

Oracle PL / SQL Deep Dive: Mastering Procédures, fonctions et packages Oracle PL / SQL Deep Dive: Mastering Procédures, fonctions et packages Apr 03, 2025 am 12:03 AM

Les procédures, fonctions et packages dans OraclePL / SQL sont utilisés pour effectuer des opérations, renvoyer des valeurs et organiser le code, respectivement. 1. Le processus est utilisé pour effectuer des opérations telles que la sortie des salutations. 2. La fonction est utilisée pour calculer et renvoyer une valeur, comme le calcul de la somme de deux nombres. 3. Les packages sont utilisés pour organiser des éléments pertinents et améliorer la modularité et la maintenabilité du code, telles que les packages qui gèrent l'inventaire.

Oracle Goldengate: réplication et intégration des données en temps réel Oracle Goldengate: réplication et intégration des données en temps réel Apr 04, 2025 am 12:12 AM

OracleGoldEngate permet la réplication et l'intégration des données en temps réel en capturant les journaux de transaction de la base de données source et en appliquant des modifications à la base de données cible. 1) Capturez les modifications: lisez le journal des transactions de la base de données source et convertissez-le en fichier de piste. 2) Modifications de transmission: transmission au système cible sur le réseau, et la transmission est gérée à l'aide d'un processus de pompe de données. 3) Modifications de l'application: sur le système cible, le processus de copie lit le fichier de sentiers et applique des modifications pour garantir la cohérence des données.

Comment effectuer des opérations de basculement et de basculement dans Oracle Data Guard? Comment effectuer des opérations de basculement et de basculement dans Oracle Data Guard? Mar 17, 2025 pm 06:37 PM

L'article détaille les procédures de basculement et de basculement dans Oracle Data Guard, soulignant leurs différences, leur planification et leurs tests pour minimiser la perte de données et assurer des opérations en douceur.

Comment utiliser PL / SQL pour rédiger des procédures, des fonctions et des déclencheurs stockés dans Oracle? Comment utiliser PL / SQL pour rédiger des procédures, des fonctions et des déclencheurs stockés dans Oracle? Mar 17, 2025 pm 06:31 PM

L'article discute de l'utilisation de PL / SQL dans Oracle pour des procédures, des fonctions et des déclencheurs stockés, ainsi que des techniques d'optimisation et de débogage. (159 caractères)

See all articles