当前位置:  数据库>oracle

Oracle存储过程分页查询

    来源: 互联网  发布时间:2017-05-19

    本文导语: 以下是Oracle存储过程分页查询返回数据集的方法: CREATE OR REPLACE PROCEDURE PROC_GET_DATA_PAGING(P_TABLENAME    IN VARCHAR2, --表(视图)名                                                P_STRWHERE    IN VARCHAR2, --查询条件           ...

以下是Oracle存储过程分页查询返回数据集的方法:

CREATE OR REPLACE PROCEDURE PROC_GET_DATA_PAGING(P_TABLENAME    IN VARCHAR2, --表(视图)名
                                                P_STRWHERE    IN VARCHAR2, --查询条件
                                                P_ORDERCOLUMN  IN VARCHAR2, --排序的列
                                                P_CURPAGE      IN OUT NUMBER, --当前页
                                                P_PAGESIZE    IN OUT NUMBER, --每页显示记录条数
                                                P_TOTALRECORDS OUT NUMBER, --总记录数
                                                P_TOTALPAGES  OUT NUMBER, --总页数
                                                V_CUR          OUT TYPES.CURSORTYPE) --返回的结果集
 IS
  V_SQL        VARCHAR2(4000) := ''; --SQL语句
  V_STARTRECORD NUMBER(10); --开始显示的记录条数
  V_ENDRECORD  NUMBER(10); --结束显示的记录条数
  V_SHOWALL    INTEGER; --是否显示全部记录
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_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;
  END IF;
  IF V_SHOWALL IS NULL THEN
    V_SQL := V_SQL || ') A WHERE ROWNUM = ' || V_STARTRECORD;
  ELSE
    V_SQL := V_SQL || ') A ) B ';
  END IF;

  DBMS_OUTPUT.PUT_LINE(V_SQL);
  OPEN V_CUR FOR V_SQL;
END PROC_GET_DATA_PAGING;


    
 
 

您可能感兴趣的文章:

  • oracle分页存储过程 oracle存储过程实例
  • Oracle自动存储管理支持库 ASMLib
  • Oracle存储过程调试简述
  • oracle的存储过程实例讲解
  • Oracle存储过程如何返回一个结果集&如何获取
  • 关于SHELL调用oracle存储过程出现的一个小问题
  • Oracle用什么语句查询字段? iis7站长之家
  • oracle数据库中查看系统存储过程的方法
  • 求教:shell 脚本怎么获取ORACLE存储过程的返回值?
  • 帮我看一下程序,java调用oracle数据存储的问题?
  • 谁有oracle存储过程的原代码?谢谢!
  • 关键字: oracle,存储过程,数据库,查询,动态sql包,数组,参传,jdbc 1
  • oracle 在一个存储过程中调用另一个返回游标的存储过程
  • Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结果
  • Oracle ASM自动管理存储管理简介
  • Linux下Oracle RAC一个节点宕机导致共享存储无法挂载的故障排除
  • 实现Oracle数据库的存储过程中拥有“role”权限
  • 对Oracle存储过程的几点认识
  • Oracle主键自增及存储过程的实现
  • Oracle索引存储关系到数据库的运行效率
  • shell调用oracle储存过程,怎么判断储存过程执行结果是否正确
  • Oracle事务!使用游标提交过程
  • oracle sql执行过程(流程图)
  • oracle 10g在红旗桌面版6.2的安装过程
  • redhat 9 下安装 oracle9i 过程中,要求指定java目录,到底是哪一个目录?
  • Oracle建表过程初学
  • Oracle Enterprise Linux安装过程
  • Oracle创建用户权限的过程
  • Linux主机下配置Oracle 10G自动启动过程记
  • java调oracle过程的出了问题,求助!帮忙看看
  • 急!!!linux9下安装oracle9i在configuration Tool过程出现错误,在线等待,解决立即给分!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • Oracle查询出现异常
  • Oracle将查询的结果放入一张自定义表中并再查询数据
  • oracle+jsp 多用户查询系统讨论:
  • Oracle查询表、视图、序列等信息查询
  • 关于Oracle的查询问题
  • Oracle用什么语句查询字段?
  • Oracle 查询指定表名的columns
  • linux下通过对文件读取方式查询oracle的版本信息
  • Oracle的大数据量查询结果显示问题。(高手帮忙)
  • Oracle对两个数据表交集的查询
  • Oracle数据库并行查询出错的解决方法
  • Oracle 合并查询
  • 查询与修改Oracle字符集
  • 紧急求救:jsp对Oracle数据库中long 型数据进行模糊查询 如何查?
  • oracle通过行范围查询取4至10行
  • mysql仿oracle的decode效果查询
  • Oracle中查询本月星期5的所有日期列表的语句
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • 紧急求救:对Oracle数据库中long 型数据进行模糊查询 如何查?
  • oracle查询不含括号及不含指定字符的方法
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 虚拟机装Oracle R12与Oracle10g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,