Maison base de données tutoriel mysql 如何在Oracle存储过程中实现分页

如何在Oracle存储过程中实现分页

Jun 07, 2016 pm 04:15 PM
oracle 分页 存储 实现

几乎每一个WEB应用都会用到分页,因此,将其做得通用高效就变得非常重要了,根据自己的想法用存储过程做了一个分页的存储过程,与大家分享,希望能够通过讨论得到更好的解决方案。 之所以用存储过程,是因为以后需要修改的话不需要修改程序代码,只需要修改

  几乎每一个WEB应用都会用到分页,因此,将其做得通用高效就变得非常重要了,,根据自己的想法用存储过程做了一个分页的存储过程,与大家分享,希望能够通过讨论得到更好的解决方案。

  之所以用存储过程,是因为以后需要修改的话不需要修改程序代码,只需要修改存储过程的代码。但这个例子是在存储过程里动态生成的SQL语句,不知道会不会因此失去存储过程一次编译和快速的特点。代码如下:

  1、首先建立一个包,用户创建一个游标类型

  create or replace package pkg_query as

  type cur_query is ref cursor;

  end pkg_query;

  2、创建存储过程

  CREATE OR REPLACE PROCEDURE prc_query

  (p_tableName in varchar2, --表名

  p_strWhere in varchar2, --查询条件

  p_orderColumn in varchar2, --排序的列

  p_orderStyle in varchar2, --排序方式

  p_curPage in out Number, --当前页

  p_pageSize in out Number, --每页显示记录条数

  p_totalRecords out Number, --总记录数

  p_totalPages out Number, --总页数

  v_cur out pkg_query.cur_query) --返回的结果集

  IS

  v_sql VARCHAR2(1000) := ''; --sql语句

  v_startRecord Number(4); --开始显示的记录条数

  v_endRecord Number(4); --结束显示的记录条数

  BEGIN

  --记录中总记录条数

  v_sql := 'SELECT TO_NUMBER(COUNT(*)) FROM ' || p_tableName || ' WHERE 1=1';

  IF p_strWhere IS NOT NULL or p_strWhere '' THEN

  v_sql := v_sql || p_strWhere;

  END IF;

  EXECUTE IMMEDIATE v_sql INTO p_totalRecords;

  --验证页面记录大小

  IF p_pageSize

  p_pageSize := 0;

  END IF;

  --根据页大小计算总页数

  IF MOD(p_totalRecords,p_pageSize) = 0 THEN

  p_totalPages := p_totalRecords / p_pageSize;

  ELSE

  p_totalPages := p_totalRecords / p_pageSize + 1;

  END IF;

  --验证页号

  IF p_curPage

  p_curPage := 1;

  END IF;

  IF p_curPage > p_totalPages THEN

  p_curPage := p_totalPages;

  END IF;

  --实现分页查询

  v_startRecord := (p_curPage - 1) * p_pageSize + 1;

  v_endRecord := p_curPage * p_pageSize;

  v_sql := 'SELECT * FROM (SELECT A.*, rownum r FROM ' ||

  '(SELECT * FROM ' || p_tableName;

  IF p_strWhere IS NOT NULL or p_strWhere '' THEN

  v_sql := v_sql || ' WHERE 1=1' || p_strWhere;

  END IF;

  IF p_orderColumn IS NOT NULL or p_orderColumn '' THEN

  v_sql := v_sql || ' ORDER BY ' || p_orderColumn || ' ' || p_orderStyle;

  END IF;

  v_sql := v_sql || ') A WHERE rownum = '

  || v_startRecord;

  DBMS_OUTPUT.put_line(v_sql);

  OPEN v_cur FOR v_sql;

  END prc_query;

  3、JAVA代码里取出结果集

  String sql= "{ call prc_query(?,?,?,?,?,?,?,?,?) }";

  CallableStatement call = con.prepareCall(sql);

  // ……中间数据设置及注册省略

  call.registerOutParameter(9, OracleTypes.CURSOR);

  // 取出结果集

 

  (ResultSet) call.getObject(9);

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 vérifier la taille de l'espace de table d'Oracle Comment vérifier la taille de l'espace de table d'Oracle Apr 11, 2025 pm 08:15 PM

Pour interroger la taille de l'espace de table Oracle, suivez les étapes suivantes: Déterminez le nom de l'espace de table en exécutant la requête: sélectionnez Tablespace_name dans dba_tablespaces; Requête la taille de l'espace de table en exécutant la requête: sélectionnez SUM (Bytes) comme total_size, sum (bytes_free) comme disponible_space, sum (bytes) - sum (bytes_free) comme used_space à partir de dba_data_files où tablespace_

Comment crypter Oracle View Comment crypter Oracle View Apr 11, 2025 pm 08:30 PM

Oracle View Encryption vous permet de crypter les données dans la vue, améliorant ainsi la sécurité des informations sensibles. Les étapes incluent: 1) la création de la clé de cryptage maître (MEK); 2) Création d'une vue cryptée, spécifiant la vue et MEK à crypter; 3) Autoriser les utilisateurs à accéder à la vue cryptée. Comment fonctionnent les vues cryptées: lorsqu'un utilisateur interroge pour une vue cryptée, Oracle utilise MEK pour décrypter les données, garantissant que seuls les utilisateurs autorisés peuvent accéder aux données lisibles.

Comment importer une base de données Oracle Comment importer une base de données Oracle Apr 11, 2025 pm 08:06 PM

Méthode d'importation de données: 1. Utilisez l'utilitaire SqlLoader: Préparez les fichiers de données, créez des fichiers de contrôle et exécutez SqlLoader; 2. Utilisez l'outil IMP / EXP: les données d'exportation, les données d'importation. Astuce: 1. Chargeur SQL * recommandé pour les ensembles de Big Data; 2. La table cible doit exister et la définition de la colonne correspond; 3. Après l'importation, l'intégrité des données doit être vérifiée.

Comment désinstaller l'installation d'Oracle a échoué Comment désinstaller l'installation d'Oracle a échoué Apr 11, 2025 pm 08:24 PM

Désinstaller la méthode pour la défaillance de l'installation d'Oracle: Fermez le service Oracle, supprimez les fichiers du programme Oracle et les clés de registre, désinstallez les variables d'environnement Oracle et redémarrez l'ordinateur. Si la désinstallation échoue, vous pouvez désinstaller manuellement à l'aide de l'outil Oracle Universal Disinstal.

Comment afficher le nom d'instance d'Oracle Comment afficher le nom d'instance d'Oracle Apr 11, 2025 pm 08:18 PM

Il existe trois façons d'afficher les noms d'instance dans Oracle: utilisez le "SQLPlus" et "SELECT INSTRESS_NAME FROM V $ INSTERNE;" Commandes sur la ligne de commande. Utilisez "Show instance_name;" Commande dans SQL * Plus. Vérifiez les variables d'environnement (Oracle_sid sur Linux) via le gestionnaire de tâches du système d'exploitation, Oracle Enterprise Manager ou via le système d'exploitation.

Comment obtenir du temps dans Oracle Comment obtenir du temps dans Oracle Apr 11, 2025 pm 08:09 PM

Il existe les méthodes suivantes pour obtenir du temps dans Oracle: current_timestamp: renvoie le temps du système actuel, précis en secondes. Systimestamp: plus précis que current_timestamp, aux nanosecondes. Sysdate: renvoie la date du système actuelle, à l'exclusion de la partie d'heure. To_char (sysdate, 'yyy-mm-dd hh24: mi: ss'): convertit la date et l'heure du système actuels en format spécifique. Extrait: extrait une partie spécifique d'une valeur temporelle, comme un an, un mois ou une heure.

Comment créer Oracle Dynamic SQL Comment créer Oracle Dynamic SQL Apr 12, 2025 am 06:06 AM

Les instructions SQL peuvent être créées et exécutées en fonction de l'entrée d'exécution en utilisant Dynamic SQL d'Oracle. Les étapes comprennent: la préparation d'une variable de chaîne vide pour stocker des instructions SQL générées dynamiquement. Utilisez l'instruction EXECUTER IMMÉDIATE OU PRÉPEPART pour compiler et exécuter les instructions SQL dynamiques. Utilisez la variable Bind pour passer l'entrée utilisateur ou d'autres valeurs dynamiques à Dynamic SQL. Utilisez EXECUTER immédiat ou exécuter pour exécuter des instructions SQL dynamiques.

Comment lire le rapport Oracle AWR Comment lire le rapport Oracle AWR Apr 11, 2025 pm 09:45 PM

Un rapport AWR est un rapport qui affiche les performances de la base de données et les instantanés d'activité. Les étapes d'interprétation comprennent: l'identification de la date et de l'heure de l'instantané d'activité. Consultez un aperçu des activités et de la consommation de ressources. Analyser les activités de session pour trouver des types de session, la consommation de ressources et les événements d'attente. Trouvez des goulots d'étranglement potentiels de performance tels que des instructions SQL lentes, des problèmes de ressources et des problèmes d'E / S. Affichez les événements d'attente, identifiez-les et résolvez-les pour les performances. Analyser les modèles d'utilisation des verrous et de la mémoire pour identifier les problèmes de mémoire qui causent des problèmes de performances.

See all articles