`
java0
  • 浏览: 9985 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle java 分页的一个包

阅读更多
----oracle 代码

----说明部分
CREATE OR REPLACE PACKAGE CURSPKG AS
TYPE refCursorType IS REF CURSOR;
procedure sp_Page(p_PageSize       int, --每页记录数
                    p_PageNo         int, --当前页码,从 1 开始
                    p_SqlSelect      varchar2, --查询语句,含排序部分
                    p_SqlCount       varchar2, --获取记录总数的查询语句
                    p_OutRecordCount out int, --返回总记录数
                    p_OutCursor      out refCursorType);
END;

---包体

create or replace package body CURSPKG is

procedure sp_Page(p_PageSize       int, --每页记录数
                    p_PageNo         int, --当前页码,从 1 开始
                    p_SqlSelect      varchar2, --查询语句,含排序部分
                    p_SqlCount       varchar2, --获取记录总数的查询语句
                    p_OutRecordCount out int, --返回总记录数
                    p_OutCursor      out refCursorType) is
    v_sql       varchar2(3000);
    v_count     int;
    v_heiRownum int;
    v_lowRownum int;
begin

    ----取记录总数
    execute immediate p_SqlCount
      into v_count;
    p_OutRecordCount := v_count;
    ----执行分页查询
    v_heiRownum := p_PageNo * p_PageSize;
    v_lowRownum := v_heiRownum - p_PageSize + 1;

    v_sql := 'SELECT * FROM (SELECT A.*, rownum rn
    FROM (' || p_SqlSelect || ') A
    WHERE rownum <= ' || to_char(v_heiRownum) || ') B
    WHERE rn >= ' || to_char(v_lowRownum);
    --注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn

    OPEN p_OutCursor FOR v_sql;

end sp_Page;

end;







/*/////java代码  */

public Object[] findStuffByQuary(String name,String qualitiy,String type,String level, int Npage, int PageSize) {
String sql_data = "";
String sql_count = "";


String call = "{call CURSPKG.SP_PAGE(?,?,?,?,?,?)}";
Connection conn = connectionMgr.getCon();
CallableStatement ps;
Object[] obj = new Object[2];
List<VTmarketTgoods> list = new ArrayList<VTmarketTgoods>();
int countsize = 0;
try {
ps = conn.prepareCall(call);
ps.setInt(1, PageSize); // 每页数量
ps.setInt(2, Npage); // 页码
// 查询商店能购买的物品
// 取数据的sql
ps.setString(3, sql_data);
// 取数据个数的sql
ps.setString(4, sql_count);
// 输出数据行数
ps.registerOutParameter(5,OracleTypes.INTEGER);
// 输出游标记录集
ps.registerOutParameter(6, OracleTypes.CURSOR);
ps.execute();
countsize = ((OracleCallableStatement) ps).getInt(5);
ResultSet rs = ((OracleCallableStatement) ps).getCursor(6);
while (rs.next()) {
VTmarketTgoods tsg = new VTmarketTgoods();
filldata(tsg, rs);
list.add(tsg);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
obj[0] = list; obj[1] = countsize;
return obj;
}
分享到:
评论

相关推荐

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

    为了实现分页查询,我们可以创建一个专门的Page类,包含当前页数、每页记录数、总记录数等属性,以及获取和设置这些属性的方法。 接下来,我们探讨Oracle数据库中的分页查询。Oracle提供了ROWNUM伪列,可以用来限制...

    java web与Oracle数据的分页功能

    对于初学者,这个项目提供了一个很好的实践机会,你可以通过它了解Java Web与Oracle数据库交互的基本流程,以及分页功能的实现细节。同时,你还可以扩展这个功能,比如添加排序、搜索等高级特性,进一步提升自己的...

    mysql、sqlserver、oracle分页,java分页统一接口实现

    本文将对 MySQL、SQL Server、Oracle 分页的实现进行详细的介绍,并提供一个 Java 分页统一接口的实现例子。 一、MySQL 分页 MySQL 分页使用 limit 语句来实现,limit 语句可以指定数据的起始行和行数。例如,以下...

    oracle 分页完整代码

    以下是一个简单的Java分页示例: ```java public List&lt;YourEntity&gt; fetchPagedData(int pageNum, int pageSize) { String sql = "SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM your_table ORDER BY ...

    Oracle的SQL分页实践

    这里,`ROW_NUMBER() OVER (ORDER BY some_column)`会根据指定的排序列生成一个行号,然后通过`BETWEEN`来选择特定范围的行。 然而,即使使用ROW_NUMBER(),在大表中执行这样的查询仍然可能较慢,因为Oracle必须为...

    java连接Oracle分页显示

    5. **存储过程分页**:在Oracle中,可以创建一个存储过程来处理分页逻辑,这样可以减少与数据库的交互次数,提高效率。存储过程接受页码和每页大小作为参数,返回分页后的结果集。 在Java中,我们可以使用JDBC...

    java实现oracle分页策略

    在Java中,我们可以创建一个分页类,包含当前页码、每页记录数等属性,并提供计算起始位置和结束位置的方法。例如: ```java public class Pagination { private int currentPage; private int pageSize; ...

    java oracle数据库过程实现jsp分页

    在Oracle数据库中,我们可以创建一个包含分页逻辑的存储过程,接收两个参数:页数`P`和每页大小`N`,并返回所需的数据。 以下是一个简单的Oracle存储过程示例: ```sql CREATE OR REPLACE PACKAGE page_pkg AS ...

    java Oracle存储过程分页整理

    以下是一个简单的示例: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "username", "password"); // ...

    oracle包用存储过程图分页

    根据提供的信息,我们可以详细解析如何在Oracle数据库中创建一个包,并在该包内定义一个存储过程来实现分页功能。这种做法通常用于处理大量数据时,以提高查询效率和用户体验。 ### Oracle包与存储过程 #### 一、...

    oracle数据库级分页(java)

    Oracle数据库级分页是数据库管理中的一个重要概念,特别是在处理大量数据时,为了提高查询效率和用户体验,分页技术显得尤为关键。在Java开发中,我们通常利用JDBC(Java Database Connectivity)来实现这一功能。本...

    oracle数据库分页代码

    关于oracle 的分页、翻页的java源代码,结合JDBC连接数据库实现,比较基础的JDBC结合swing图形框架实现,适合Java初学者使用

    Java Oracle实现分页功能.pdf

    本文为读者提供了一个完整的解决方案,指导读者如何使用Java语言与Oracle数据库实现分页功能。 知识点: * Oracle数据库的存储过程 * PL/SQL语言 * Java语言 * 分页功能 * 数据库查询优化 相关概念: * 数据库...

    Java+jsp后台分页 oracle数据库

    这是我自己改的分页代码 呵呵 写了将近一个星期 只有一个控制类和一个jsp页 方便阅读和修改 只要修改test.java里面的数据库连接和表名就可以用了 希望大家工作和学习顺利 里面的class12.jar这个包是因为我的数据库...

    SSH+ORACLE好用分页

    2. **创建DAO层**:在数据访问对象(DAO)层,我们需要定义一个方法来执行分页查询。使用Hibernate的Criteria或HQL查询语言,配合PageHelper或者自己实现的分页逻辑,可以轻松实现分页查询。 3. **定义Service层**...

    oracle 分页类文件

    再者,`ShowSQL.java`可能是一个辅助类,用于生成分页SQL。在Oracle数据库中,由于不支持直接的`LIMIT`子句,通常会通过`ROWNUM`和子查询来实现分页。`ShowSQL.java`可能会包含生成这类复杂SQL的静态方法,接收页码...

    java分页大全 包括最强大的java分页类

    本资源包"java分页大全"提供了多种Java分页实现,旨在帮助开发者更高效地进行数据查询和展示。 首先,我们来探讨一下Java分页的基本原理。分页通常涉及两个关键部分:一是计算当前页的数据范围,二是根据这个范围从...

    Oracle&JSP分页和Oracle分页

    Oracle提供了一种名为ROWNUM的伪列,它会为每一行返回一个唯一的数字,从1开始递增。通过ROWNUM,我们可以实现简单的分页。例如,如果我们想获取第1页(通常包含前10条记录),可以编写如下的SQL查询: ```sql ...

    完美整合(通用分页)SSH+Oracle (需要自己加入jar包,只是源码)

    【SSH+Oracle 整合详解】 SSH(Struts2、Spring、Hibernate)是Java开发中常用的三大开源框架,它们各自负责Web应用的不同层面:...理解并掌握这些知识点,将有助于你理解和使用这个整合的SSH+Oracle分页解决方案。

    ssh+oracle分页

    1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它负责处理HTTP请求,将请求映射到相应的Action,然后Action通过业务逻辑层与持久层交互,最后返回结果视图。在分页场景...

Global site tag (gtag.js) - Google Analytics