Comment écrire une pagination dans Oracle
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
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 :
- 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.
- 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
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 :
- Triez d'abord les enregistrements de la table EMPLOYEE selon emp_id.
- 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.
- 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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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.

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.

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.

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.

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.

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)
