Exemples pour expliquer comment utiliser les procédures stockées Oracle pour implémenter des requêtes de pagination

PHPz
Libérer: 2023-04-17 11:20:37
original
810 Les gens l'ont consulté

Dans la base de données Oracle, les procédures stockées peuvent être utilisées pour implémenter de nombreuses logiques complexes, parmi lesquelles les requêtes de pagination sont également l'une des exigences courantes. Cet article explique comment utiliser les procédures stockées Oracle pour implémenter des requêtes de pagination et fournit un exemple.

1. Conditions requises pour la requête de pagination

Dans les applications réelles, il est généralement nécessaire d'interroger et d'afficher une grande quantité de données. Si toutes les données sont affichées en même temps, cela affectera non seulement les performances du système, mais entraînera également une mauvaise expérience utilisateur. Par conséquent, nous devons généralement afficher les données par pages et afficher les données page par page.

Dans la base de données Oracle, les requêtes de pagination sont généralement implémentées à l'aide du mot-clé ROWNUM. Par exemple, pour interroger les 10 premiers enregistrements de la base de données, vous pouvez utiliser l'instruction de requête suivante :

SELECT *
FROM table_name
WHERE ROWNUM <= 10;
Copier après la connexion

Cette instruction de requête peut renvoyer les 10 premières données de la table et implémenter une simple requête de pagination. Mais lorsque vous devez interroger les 11e à 20e données, vous devez utiliser une instruction de requête plus complexe :

SELECT *
FROM (
  SELECT ROWNUM rn, t.*
  FROM (
    SELECT *
    FROM table_name
    ORDER BY field_name
  ) t
  WHERE ROWNUM <= 20
)
WHERE rn >= 11;
Copier après la connexion

Cette instruction de requête peut renvoyer les 11e à 20e données du tableau. Cependant, cette instruction de requête est relativement complexe et peu lisible. S'il existe de nombreux endroits où des requêtes de pagination sont requises, de nombreuses instructions de requête de ce type doivent être écrites, ce qui n'est pas pratique pour la maintenance et la gestion.

Afin de résoudre ce problème, nous pouvons utiliser des procédures stockées Oracle pour implémenter la fonction de requête de pagination.

2. Utilisez des procédures stockées pour implémenter une requête de pagination

Utilisez des procédures stockées pour implémenter des fonctions de requête de pagination, principalement en passant des paramètres. Nous devons transmettre les paramètres suivants :

  • nom de la table ;
  • colonne à afficher
  • champ de tri ;
  • page ;
  • Sur la base de ces paramètres, la procédure stockée peut implémenter des requêtes de pagination basées sur le mot-clé ROWNUM.

Ce qui suit est un exemple d'utilisation d'une procédure stockée pour implémenter une requête de pagination :

CREATE OR REPLACE PROCEDURE get_page_data(
    p_table_name IN VARCHAR2,
    p_columns IN VARCHAR2,
    p_order_by IN VARCHAR2,
    p_page_num IN NUMBER,
    p_page_size IN NUMBER,
    p_result OUT SYS_REFCURSOR
)
IS
BEGIN
    OPEN p_result FOR
        SELECT *
        FROM (
            SELECT ROWNUM rn, t.*
            FROM (
                SELECT p_columns
                FROM p_table_name
                ORDER BY p_order_by
            ) t
            WHERE ROWNUM <= p_page_num * p_page_size
        )
        WHERE rn >= (p_page_num - 1) * p_page_size + 1;
END;
/
Copier après la connexion

Dans cette procédure stockée, le type SYS_REFCURSOR est utilisé pour renvoyer les résultats de la requête. Ensuite, une instruction de requête de pagination est générée sur la base des paramètres transmis, et enfin les résultats de la requête sont placés dans le jeu de résultats renvoyé.

Lors de l'appel de cette procédure stockée, vous pouvez utiliser la requête suivante :

DECLARE
    v_result SYS_REFCURSOR;
BEGIN
    get_page_data('table_name', '*', 'field_name', 2, 10, v_result);
END;
/
Copier après la connexion

Cette requête renverra les données de la page 2 du tableau, avec 10 enregistrements affichés sur chaque page.

En bref, l'utilisation de procédures stockées peut facilement implémenter la fonction de requête de pagination, rendant le code plus clair, plus facile à comprendre et plus maintenable. L'exemple ci-dessus a fourni une idée qui peut être modifiée et développée en fonction des besoins réels.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!