Maison Opération et maintenance exploitation et maintenance Linux procédure stockée de pagination Oracle

procédure stockée de pagination Oracle

May 20, 2023 am 09:53 AM

Oracle est un puissant système de gestion de base de données qui prend en charge des fonctionnalités avancées telles que les procédures stockées, permettant aux programmeurs d'écrire facilement une logique métier complexe. Dans certains scénarios spécifiques, il est nécessaire d'effectuer des requêtes de pagination sur une grande quantité de données. Pour y parvenir, nous pouvons écrire une procédure stockée paginée. Cet article explique comment écrire des procédures stockées de pagination Oracle.

1. Analyse des exigences

Dans le développement de sites Web, nous rencontrons souvent des situations où les données soumises par les utilisateurs doivent être affichées dans des pages. Par exemple, interroger tous les enregistrements d'une table exercera une pression importante sur les performances de la base de données et affectera l'expérience utilisateur si tous les enregistrements sont interrogés en même temps. Par conséquent, afficher les données dans des pages est une meilleure solution. Analysons les exigences :

  1. Obtenir le nombre total d'enregistrements
  2. Calculez la position de l'enregistrement de départ et de l'enregistrement de fin en fonction de la taille de chaque page et de la numéro de page actuel# 🎜🎜#
  3. Interroger les données requises en fonction de l'enregistrement de début et de l'enregistrement de fin
2. Conception de procédure stockée

Basé sur l'analyse de la demande ci-dessus, nous pouvons concevoir la procédure stockée de pagination Oracle suivante :

CREATE OR REPLACE PROCEDURE pagination(p_table_name IN VARCHAR2,
                                        p_page_num IN NUMBER,
                                        p_page_size IN NUMBER,
                                        p_total_num OUT NUMBER,
                                        p_cursor OUT SYS_REFCURSOR) IS
  v_start_pos NUMBER;
  v_end_pos NUMBER;
  v_sql_query VARCHAR2(1000);
BEGIN
  SELECT COUNT(*) INTO p_total_num FROM p_table_name;
  v_start_pos := (p_page_num - 1) * p_page_size + 1;
  v_end_pos := v_start_pos + p_page_size - 1;
  v_sql_query := 'SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM ' || p_table_name || ') A WHERE ROWNUM <= ' || v_end_pos || ') WHERE RN >= ' || v_start_pos;
  OPEN p_cursor FOR v_sql_query;
END;
/
Copier après la connexion

Le code ci-dessus créera une procédure stockée nommée pagination, qui peut recevoir 4 paramètres : nom de la table, numéro de page, taille de chacune page et nombre total d’enregistrements. Parmi eux, p_cursor est le paramètre de sortie, qui est utilisé pour renvoyer le curseur des résultats de la requête.

3. Description de la procédure stockée

    SELECT COUNT(*) INTO p_total_num FROM p_table_name;
  1. Cette instruction est utilisée pour interroger le nombre total d'enregistrements dans le tableau et stockez le résultat dans p_total_num. Grâce à cette variable, nous pouvons calculer le nombre total de pages et la plage d'enregistrement de la page actuelle.
  2. v_start_pos := (p_page_num - 1) * p_page_size + 1;
  3. Cette instruction est utilisée pour calculer la position de l'enregistrement de départ, qui est calculée à partir du numéro de page et de la taille de chaque page.
  4. v_end_pos := v_start_pos + p_page_size - 1;
  5. Cette instruction est utilisée pour calculer la position de l'enregistrement de fin, qui est également calculée à partir du numéro de page et de la taille de chaque page.
  6. v_sql_query := 'SELECT
  7. FROM (SELECT A., ROWNUM RN FROM (SELECT * FROM ' || p_table_name || ') A WHERE ROWNUM <= ' | | v_end_pos || ') WHERE RN >= ' || v_start_pos;Cette instruction est une instruction de requête, utilisée pour interroger des données dans la plage spécifiée dans la table. ROWNUM est une pseudo-colonne spécifique à Oracle qui représente le numéro de ligne de chaque enregistrement. Nous avons utilisé ROWNUM pour limiter la portée de la requête et ajouté la colonne RN via des requêtes imbriquées pour représenter le numéro de ligne de l'enregistrement actuel. Enfin, la plage des résultats de requête est limitée en fonction de la position de départ et de la position de fin.
  8. OPEN p_cursor FOR v_sql_query
  9. Cette instruction est utilisée pour exécuter l'instruction de requête et stocker les résultats dans le curseur p_cursor. Ce curseur peut être utilisé pour les opérations et transferts de données ultérieurs.
4. Cas de test

Afin de vérifier si la procédure stockée est correcte, nous pouvons créer une table de test et insérer des données dans la table : # 🎜🎜 #
CREATE TABLE test(
  id NUMBER(10) PRIMARY KEY,
  name VARCHAR2(50)
);

DECLARE 
  v_id NUMBER;
BEGIN
  FOR i IN 1..100 LOOP
    v_id := i;
    INSERT INTO test(id,name) VALUES(v_id,'name'||v_id);
  END LOOP;
  COMMIT;
END;
/
Copier après la connexion

Ensuite, nous pouvons exécuter le code suivant pour tester notre procédure stockée :

DECLARE
  v_page_num NUMBER := 1;
  v_page_size NUMBER := 10;
  v_total_num NUMBER;
  v_cursor SYS_REFCURSOR;
  v_id NUMBER;
  v_name VARCHAR2(50);
BEGIN
  pagination('test',v_page_num,v_page_size,v_total_num,v_cursor);
  
  DBMS_OUTPUT.PUT_LINE('Total number of records: ' || v_total_num);
  LOOP
    FETCH v_cursor INTO v_id,v_name;
    EXIT WHEN v_cursor%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('Id: '||v_id ||', Name: '|| v_name);
  END LOOP;
  CLOSE v_cursor;
END;
/
Copier après la connexion

Le code ci-dessus affichera les valeurs d'identifiant et de nom de 1 à 10 enregistrements.

Il ressort des résultats des tests que la procédure stockée de pagination que nous avons écrite peut calculer correctement la plage d'enregistrements et que les résultats de la requête sont également corrects. Cette procédure stockée peut réduire efficacement la pression sur la base de données lors de l'interrogation des données, tout en évitant les problèmes de performances causés par l'interrogation d'un trop grand nombre de données à la fois.

De plus, nous pouvons également ajuster les paramètres et les instructions de requête dans la procédure stockée en fonction des besoins réels pour nous adapter à des scénarios de requêtes plus complexes.

5. Résumé

Dans la base de données Oracle, les procédures stockées sont une fonctionnalité très importante, qui peut nous aider à écrire des processus complexes de logique métier et d'exploitation des données et à améliorer l'efficacité opérationnelle et maintenabilité. Cet article explique comment écrire des procédures stockées de pagination Oracle. En analysant les exigences, en concevant des algorithmes et en écrivant du code, sur la base de la compréhension des procédures stockées Oracle, une procédure stockée de pagination simple est implémentée. En étudiant les cas présentés dans cet article, il aidera les lecteurs à mieux maîtriser les méthodes et techniques d'écriture de procédures stockées Oracle.

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Où afficher les journaux de Tigervnc sur Debian Où afficher les journaux de Tigervnc sur Debian Apr 13, 2025 am 07:24 AM

Dans Debian Systems, les fichiers journaux du serveur TiGervnc sont généralement stockés dans le dossier .vnc dans le répertoire personnel de l'utilisateur. Si vous exécutez TiGervnc en tant qu'utilisateur spécifique, le nom du fichier journal est généralement similaire à XF: 1.log, où XF: 1 représente le nom d'utilisateur. Pour afficher ces journaux, vous pouvez utiliser la commande suivante: Cat ~ / .vnc / xf: 1.log ou, vous pouvez ouvrir le fichier journal à l'aide d'un éditeur de texte: nano ~ / .vnc / xf: 1.log, veuillez noter que l'accès et la visualisation des fichiers journaux peuvent nécessiter des autorisations racinaires, en fonction des paramètres de sécurité du système.

Opérations clés de Linux: Guide du débutant Opérations clés de Linux: Guide du débutant Apr 09, 2025 pm 04:09 PM

Les débutants Linux doivent maîtriser les opérations de base telles que la gestion des fichiers, la gestion des utilisateurs et la configuration du réseau. 1) Gestion des fichiers: utilisez les commandes MKDIR, Touch, LS, RM, MV et CP. 2) Gestion des utilisateurs: utilisez des commandes UserAdd, Passwd, UserDel et UserMod. 3) Configuration du réseau: utilisez les commandes IFConfig, Echo et UFW. Ces opérations sont à la base de la gestion du système Linux, et les maîtriser peut gérer efficacement le système.

Comment Debian Readdir s'intègre à d'autres outils Comment Debian Readdir s'intègre à d'autres outils Apr 13, 2025 am 09:42 AM

La fonction ReadDir dans le système Debian est un appel système utilisé pour lire le contenu des répertoires et est souvent utilisé dans la programmation C. Cet article expliquera comment intégrer ReadDir avec d'autres outils pour améliorer sa fonctionnalité. Méthode 1: combinant d'abord le programme de langue C et le pipeline, écrivez un programme C pour appeler la fonction readdir et sortir le résultat: # include # include # include # includeIntmain (intargc, char * argv []) {dir * dir; structDirent * entrée; if (argc! = 2) {

Comment interpréter les résultats de sortie de Debian Sniffer Comment interpréter les résultats de sortie de Debian Sniffer Apr 12, 2025 pm 11:00 PM

DebianSniffer est un outil de renifleur de réseau utilisé pour capturer et analyser les horodatages du paquet de réseau: affiche le temps de capture de paquets, généralement en quelques secondes. Adresse IP source (SourceIP): l'adresse réseau de l'appareil qui a envoyé le paquet. Adresse IP de destination (DestinationIP): l'adresse réseau de l'appareil recevant le paquet de données. SourcePort: le numéro de port utilisé par l'appareil envoyant le paquet. Destinatio

Guide de configuration de Debian Mail Server DNS Guide de configuration de Debian Mail Server DNS Apr 13, 2025 am 11:33 AM

Pour configurer les paramètres DNS pour le serveur de messagerie Debian, vous pouvez suivre ces étapes: ouvrir le fichier de configuration du réseau: Utilisez un éditeur de texte (tel que VI ou NANO) pour ouvrir le fichier de configuration du réseau / etc / réseau / interfaces. sudonano / etc / réseau / interfaces Trouver la configuration de l'interface réseau: recherchez l'interface réseau à modifier dans le fichier de configuration. Normalement, la configuration de l'interface Ethernet est située dans le bloc IFETH0.

Comment Debian améliore la vitesse de traitement des données Hadoop Comment Debian améliore la vitesse de traitement des données Hadoop Apr 13, 2025 am 11:54 AM

Cet article examine comment améliorer l'efficacité du traitement des données Hadoop sur les systèmes Debian. Les stratégies d'optimisation couvrent les mises à niveau matérielle, les ajustements des paramètres du système d'exploitation, les modifications de configuration de Hadoop et l'utilisation d'algorithmes et d'outils efficaces. 1. Le renforcement des ressources matérielles garantit que tous les nœuds ont des configurations matérielles cohérentes, en particulier en faisant attention aux performances du CPU, de la mémoire et de l'équipement réseau. Le choix des composants matériels de haute performance est essentiel pour améliorer la vitesse de traitement globale. 2. Réglage des paramètres JVM: Ajustez dans le fichier hadoop-env.sh

Comment recycler des packages qui ne sont plus utilisés Comment recycler des packages qui ne sont plus utilisés Apr 13, 2025 am 08:51 AM

Cet article décrit comment nettoyer les packages logiciels inutiles et libérer l'espace disque dans le système Debian. Étape 1: Mettez à jour la liste des packages Assurez-vous que votre liste de packages est à jour: SudoaptupDate Étape 2: Afficher les packages installés Utilisez la commande suivante pour afficher tous les packages installés: DPKG - GETT-Selections | Grep-Vdeinstall Étape 3: Identifier les packages de redondance Utilisez l'outil d'aptitude pour trouver des packages qui ne sont plus nécessaires. L'aptitude fournira des suggestions pour vous aider à supprimer en toute sécurité les packages: SudoaptitudEsearch '~ Pimportant' Cette commande répertorie les balises

Comment utiliser les journaux Debian Apache pour améliorer les performances du site Web Comment utiliser les journaux Debian Apache pour améliorer les performances du site Web Apr 12, 2025 pm 11:36 PM

Cet article expliquera comment améliorer les performances du site Web en analysant les journaux Apache dans le système Debian. 1. Bases de l'analyse du journal APACH LOG enregistre les informations détaillées de toutes les demandes HTTP, y compris l'adresse IP, l'horodatage, l'URL de la demande, la méthode HTTP et le code de réponse. Dans Debian Systems, ces journaux sont généralement situés dans les répertoires /var/log/apache2/access.log et /var/log/apache2/error.log. Comprendre la structure du journal est la première étape d'une analyse efficace. 2.

See all articles