Maison base de données tutoriel mysql oracle中使用触发器实现查询分页功能

oracle中使用触发器实现查询分页功能

Jun 07, 2016 pm 04:21 PM
oracle 使用 分页 功能 实现 查询 触发器

oracle包分为包规范和包体 一:首先创建包规范 create or replace package p_pagewithgroup is -- Author : 肖伟 -- Created : 2014/3/18 -- Purpose : 分组分页过程 TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集 PROCEDURE UP_GetRecordWith

   oracle包分为包规范和包体

  一:首先创建包规范

  create or replace package p_pagewithgroup is

  -- Author : 肖伟

  -- Created : 2014/3/18

  -- Purpose : 分组分页过程

  TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集

  PROCEDURE UP_GetRecordWithGroupByPage(

  tblName in varchar2, --表名

  PageSize in number, --页面大小

  PageIndex in number, --当前页

  IsReCount out number,--返回总条数

  strWhere in varchar2,-- 查询条件 (注意: 不要加 where)

  strColums in varchar2, --字段集合,逗号分割

  strSelectColums in varchar2, --字段集合,逗号分割

  strGroup in varchar2,--分组条件语句

  strOrder in varchar2,-- 排序条件语句

  v_cur out type_cur --返回当前页数据记录

  );

  end p_pagewithgroup;

  二:创建包结构体

  create or replace package body p_pagewithgroup is

  PROCEDURE UP_GetRecordWithGroupByPage(

  tblName in varchar2, --表名

  PageSize in number, --页面大小

  PageIndex in number, --当前页

  IsReCount out number,--返回总条数

  strWhere in varchar2,-- 查询条件 (注意: 不要加 where)

  strColums in varchar2, --字段集合,逗号分割

  strSelectColums in varchar2, --字段集合,逗号分割

  strGroup in varchar2,--分组条件语句

  strOrder in varchar2,-- 排序条件语句

  v_cur out type_cur --返回当前页数据记录

  )

  AS

  --定义变量

  v_sql VARCHAR2(8000);

  v_count number;

  v_row_start NUMBER; --开始记录

  v_row_end NUMBER; --结束记录

  begin

  ------------------------------------------------------------显示总条数

  v_sql := 'select count(1) from ' || tblName;

  IF strWhere is not NULL OR strWhere ''

  THEN

  v_sql := v_sql || ' where ' || strWhere;

  END IF;

  IF strGroup is not null or strGroup ''

  then

  v_sql := v_sql || ' group by ' || strGroup;

  end if;

  DBMS_OUTPUT.put_line (v_sql);

  --v_sql:='select count(1) from BS_USER where 1=1';

  EXECUTE IMMEDIATE v_sql into v_count ;

  IsReCount:=v_count;

  ------------------------------------------------------------显示任意页内容

  -- IF PageSize

  -- PageSize:=1;

  -- END IF;

  v_row_start := (PageIndex - 1) * PageSize + 1;

  v_row_end := PageIndex * PageSize;

  v_sql:='select '||strSelectColums||' from (select t.*,RowNum as rn from (select '||strColums||' from '||tblName;

  IF strWhere is not NULL OR strWhere ''

  THEN

  v_sql := v_sql || ' where ' || strWhere;

  END IF;

  IF strGroup is not null or strGroup ''

  then

  v_sql := v_sql || ' group by ' || strGroup;

  end if;

  IF strOrder is not null or strOrder ''

  then

  v_sql := v_sql || ' order by ' || strOrder;

  end if;

  v_sql := v_sql ||') t) where rn between '||v_row_start||' and '||v_row_end;

  DBMS_OUTPUT.put_line (v_sql);

  open v_cur for v_sql;

  End UP_GetRecordWithGroupByPage;

  ----------------------------------------------------------

  end p_pagewithgroup;

  三:测试

  首先打开PL/SQL command window

  SQL>declare

  -- Local variables here

  IsReCount number;--返回总条数

  my_cur p_pagewithgroup.type_cur ; --返回当前页数据记录

  begin

  -- Test statements here

  p_pagewithgroup.UP_GetRecordWithGroupByPage('T_DIVISION',5,1,ISReCount,' 1=1 ',' * ',' * ',null,null,my_cur );

  DBMS_OUTPUT.PUT_LINE(TO_CHAR(IsReCount));

  end;

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

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)

Fonction pour calculer le nombre de jours entre deux dates dans Oracle Fonction pour calculer le nombre de jours entre deux dates dans Oracle May 08, 2024 pm 07:45 PM

Fonction pour calculer le nombre de jours entre deux dates dans Oracle

Combien de temps les journaux de la base de données Oracle seront-ils conservés ? Combien de temps les journaux de la base de données Oracle seront-ils conservés ? May 10, 2024 am 03:27 AM

Combien de temps les journaux de la base de données Oracle seront-ils conservés ?

L'ordre des étapes de démarrage de la base de données Oracle est L'ordre des étapes de démarrage de la base de données Oracle est May 10, 2024 am 01:48 AM

L'ordre des étapes de démarrage de la base de données Oracle est

Comment utiliser l'intervalle dans Oracle Comment utiliser l'intervalle dans Oracle May 08, 2024 pm 07:54 PM

Comment utiliser l'intervalle dans Oracle

Exigences de configuration matérielle du serveur de base de données Oracle Exigences de configuration matérielle du serveur de base de données Oracle May 10, 2024 am 04:00 AM

Exigences de configuration matérielle du serveur de base de données Oracle

Comment voir le nombre d'occurrences d'un certain caractère dans Oracle Comment voir le nombre d'occurrences d'un certain caractère dans Oracle May 09, 2024 pm 09:33 PM

Comment voir le nombre d'occurrences d'un certain caractère dans Oracle

De quelle quantité de mémoire Oracle a-t-il besoin ? De quelle quantité de mémoire Oracle a-t-il besoin ? May 10, 2024 am 04:12 AM

De quelle quantité de mémoire Oracle a-t-il besoin ?

Quels symboles sont utilisés pour connecter les chaînes à la base de données dans Oracle ? Quels symboles sont utilisés pour connecter les chaînes à la base de données dans Oracle ? May 08, 2024 pm 07:36 PM

Quels symboles sont utilisés pour connecter les chaînes à la base de données dans Oracle ?

See all articles