`

转Oracle分页查询

 
阅读更多

1.Oralce的分页查询

分页查询:可以简化表复杂度,让一张很大的表,分成很多块,不要一次性全部显示成一整块;方便阅览

 

可以将下列语句当成一个模版使用select * from (select t1.*,rownum rn from emp t1 where rownum < 8) where rn > 3;

 

定义一个包,包里面有游标变量类型:(记住游标变量是不能在包中或包体中声明的比如 mycursor sys_refcursor这是不允许的)

 

 

Sql代码   收藏代码
  1. create or replace package mypage  
  2. is  
  3. type cursor_emp is ref cursor;  
  4. end mypage;  
 

接着写存储过程,来实现分页的业务逻辑

   下面定义了六个变量, 三个输入参数(表名,第几页,一页显示几行数据),三个输出变量(表中数据总共的行数,表总共分了几页,游标变量(用来指明你需要查询的记录)).

 

 

Sql代码   收藏代码
  1. --pageCount 显示第几页  
  2. --pageSize 一页显示的数据  
  3. create or replace procedure emp_pro(tableName varchar2,pageCount number,pageSize number,  
  4. allSize out number,allPage out number,mycursor out mypage.cursor_emp)  
  5. is  
  6. Sql_s varchar2(1000);  
  7. Sql_count varchar2(1000);  
  8. startSize number:=pageCount*pageSize-pageSize+1;  
  9. endSize number:=pageCount*pageSize;  
  10. begin  
  11.   
  12.   Sql_s:='select * from  
  13.     (select t1.*,rownum rn from '||tableName||' t1 where rownum <= '||endSize||'where rn >= '||startSize;  
  14.     open mycursor for Sql_s;  
  15.    Sql_count:='select count(*) from emp';  
  16.    execute immediate Sql_count into allSize;  
  17.    if mod(allSize,pageSize)=0 then  
  18.            allPage:=allSize/pageSize;  
  19.       else  
  20.            allPage:=allSize/pageSize+1;  
  21.    end if;  
  22. end;  

 

    我们来分析下面的语句

Sql_s:='select * from(select t1.*,rownum rn from '||tableName||' t1 where rownum <= '||endSize||') where rn >= '||startSize; open mycursor for Sql_s;

 

    其实在PL/SQL编程中,可以把你需要写的SQL语句给一个字符变量,当执行存储过程的时候,oracle自动会辨认出来,

   execute immediate SQL语句 into 变量

   这一句的意思是:立即执行给定的SQL语句,把返回的结果给变量

 

  JAVA调用存储过程:

 

 

Java代码   收藏代码
  1. try  
  2. {  
  3.     Class.forName("oracle.jdbc.driver.OracleDriver");  
  4.     Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Class","scott","admin");  
  5.     CallableStatement call = con.prepareCall("{call emp_pro(?,?,?,?,?,?)}");  
  6.     call.setString(1"EMP");  
  7.     call.setInt(25);  
  8.     call.setInt(34);  
  9.     //注册属性值  
  10.     call.registerOutParameter(4, OracleTypes.INTEGER);  
  11.     call.registerOutParameter(5, OracleTypes.INTEGER);  
  12.     call.registerOutParameter(6, OracleTypes.CURSOR);  
  13.     call.execute();  
  14.     int ALLSIZE = call.getInt(4);  
  15.     int ALLPAGE = call.getInt(5);  
  16.     System.out.println("记录数: "+ALLSIZE);  
  17.     System.out.println("总页数: "+ALLPAGE);  
  18.     ResultSet rs = (ResultSet)call.getObject(6);  
  19.     while(rs.next())  
  20.     {  
  21.         System.out.println("EMPNO="+rs.getInt(1)+"  "+"ENAME="+rs.getString(2)+  
  22.                 " "+"SAL="+rs.getInt(6));  
  23.     }  
  24. }  
  25. catch(Exception e)  
  26. {  
  27.     e.printStackTrace();  
  28. }  
 

转自:http://aazham.iteye.com/blog/1167341

 

分享到:
评论

相关推荐

    oracle分页查询sql

    ### Oracle分页查询详解 #### 一、分页查询的重要性 在数据库操作中,分页查询是一项非常重要的技术。尤其当处理大量数据时,一次性获取所有数据不仅会消耗大量的网络带宽,还可能导致前端页面加载缓慢,用户体验...

    oracle分页查询并返回总记录数据存储过程

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

    ORACLE分页查询效率

    根据所提供的信息,我们可以提炼出以下关于“ORACLE分页查询效率”的相关知识点: ### 一、Oracle中的分页查询 #### 1.1 分页查询的重要性 - **背景介绍**:在实际应用中,数据库查询结果往往非常庞大,一次性加载...

    如何解决Oracle分页查询中排序与效率问题

    Oracle 分页查询优化与排序解决方案 本文主要解决 Oracle 分页查询中排序与效率问题,通过实践和分析,提供了两种解决方案,并对比了两种方法的优缺点。 知识点 1: Oracle 分页查询的基本概念 Oracle 分页查询是...

    msql和oracle分页查询语句笔记

    msql和oracle分页查询语句笔记

    oracle分页查询

    Oracle 分页查询详解 Oracle 分页查询是指从大型数据表中提取指定范围的记录,以便提高查询效率和减少数据传输量。常用的 Oracle 分页查询方法有三种:使用 ROWNUM、使用 ROW_NUMBER() 和使用子查询。 第一种方法...

    解决Oracle分页查询中排序与效率问题

    ### 解决Oracle分页查询中排序与效率问题 在Oracle数据库中进行分页查询时,经常会出现性能瓶颈,尤其是在处理大数据量的情况下。本篇文章将详细探讨如何优化Oracle分页查询中的排序与效率问题。 #### 一、理解...

    oracle的分页查询

    Oracle 的分页查询 在 Oracle 中,分页查询是非常常见的需求,但是在使用查询条件时又不能使用大于号(&gt;)。本文将讲解 Oracle 中的分页查询,包括使用 ROWNUM 伪列和 ORDER BY 子句对查询结果进行排序和分页。 一...

    Oracle分页查询(很不错的介绍)

    首先,理解Oracle分页查询的基本结构。通常,Oracle的分页查询采用嵌套查询的方式实现。以下是一个典型的分页查询模板: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A ...

    Oracle的分页查询语句 Oracle分页的存储过程

    Oracle数据库在处理大数据量查询时,分页查询是一种常见的优化策略,目的是限制返回结果集的大小,加快查询速度,提供更好的用户体验。本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询...

    java web与Oracle数据的分页功能

    2. **构造SQL查询语句**:Oracle数据库支持使用`ROWNUM`进行分页查询。基本的SQL模板为: ```sql SELECT * FROM (SELECT t.*, ROWNUM rnum FROM (YOUR_SELECT_QUERY) t WHERE ROWNUM ) WHERE rnum &gt;= :startRow `...

    Oracle数据库中很实用的分页查询代码

    分页查询是Oracle数据库比较重要的一个知识点!希望这个对你有参照作用。

    Oracle分页(limit方式的运用)

    ### Oracle分页(LIMIT方式的运用) 在数据库查询操作中,分页是非常常见的需求之一,尤其是在数据量较大的情况下,为了提高用户体验以及减轻服务器压力,...希望本文能为你理解和掌握Oracle分页查询提供一定的帮助。

    Oracle&JSP分页和Oracle分页

    本文将详细讲解如何在Oracle数据库中进行分页查询,并结合JSP实现前端展示。 首先,了解Oracle数据库中的分页。Oracle提供了一种名为ROWNUM的伪列,它会为每一行返回一个唯一的数字,从1开始递增。通过ROWNUM,我们...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    本篇文章将重点讨论如何使用Java JDBC和Oracle数据库实现面向对象的分页查询。 首先,我们需要了解面向对象编程的基本概念。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,强调用对象来表示...

    Oracle的SQL分页实践

    首先,我们要了解Oracle中的基本分页查询方式。在Oracle 9i及更高版本中,可以使用ROWNUM伪列进行分页。ROWNUM是在查询结果集生成时被赋予的数值,表示行的顺序。例如,如果我们想要获取前10条记录,可以使用以下...

    ssh+oracle分页

    在Oracle分页中,Hibernate通过HQL(Hibernate Query Language)或SQL来执行查询,并支持Criteria、Query和Session的Criteria API等方式实现分页。通常,我们会通过设置`setFirstResult`和`setMaxResults`方法来指定...

Global site tag (gtag.js) - Google Analytics