`
tanlan
  • 浏览: 203625 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle中的分页存储过程

阅读更多

1.创建测试表

create table Account(
    cardId char(20) primary key,  --帐号
    name char(20) not null,         --姓名
        money numeric(20,2)         --存款
);

 2.录入测试数据

insert into Account values('0001','张三',1000);
insert into Account values('0002','李四',2000);
insert into Account values('0003','王五',3000);
insert into Account values('0004','钱六',4000);

 3,编写一个视图以简化存储过程的编写与调用写法

create or replace view v_page 
as
select rownum rn,t.* from Account t;

 4,编写存储过程(省略了查询条件)

create or replace procedure P_Pagination(
       page  int,--第几页
       perPageCount int ,--每页几条记录
       totalPage out int,--总页数
       pageResultSet out SYS_REFCURSOR --当前页查询出来的结果集 
)
as
   totalCount int;--总记录数
   pageSql varchar(2000); --查询某页结果的SQL语句
begin
  select count(1) into totalCount from Account;  --查询总记录数
  totalPage := ceil( totalCount / perPageCount);   --算出总页数
  pageSql := 'select * from v_page u 
    where rn between '||(page-1)||'*'||perPageCount||'+1 and '||(page*perPageCount);
   open pageResultSet for pageSql;
end P_Pagination;

 5,在PL/SQL中调用该存储过程

declare 
   totalaPage int;  --总页数
   pageResult  SYS_REFCURSOR; --存放结果的变量
   account v_page%rowtype;
 begin
    P_Pagination(1,2,totalaPage,pageResult);
    dbms_output.put_line('总共'||totalaPage||'页');
    fetch pageResult into account;
   while pageResult%found loop
      dbms_output.put_line(account.cardid||','||account.name||','||account.money);
      fetch pageResult into account;
    end loop;
   close pageResult;
end;

 6,使用JDBC调用的代码片段

public static void main(String[] args) throws SQLException {
	Connection conn = ConnectionManage.getConnection();
	CallableStatement cs = conn.prepareCall("call P_Pagination(?,?,?,?)");
	cs.setInt(1, 1);
	cs.setInt(2, 3);
	cs.registerOutParameter(3, Types.INTEGER);
	cs.registerOutParameter(4, oracle.jdbc.OracleTypes.CURSOR);
	cs.execute();
	int totalPage = cs.getInt(3);
	System.out.println("共有" + totalPage + "页");
	ResultSet rs = (ResultSet) cs.getObject(4);
	while (rs.next()) {
		System.out.println(rs.getString("cardid")+","+rs.getString("name") +"," + rs.getString("money"));
	}
}
 
3
3
分享到:
评论
1 楼 njliukang 2013-08-24  
谭BOSS,连JDBC那块你用代理写写撒

相关推荐

    oracle分页存储过程

    oracle分页存储过程,oracle分页存储过程

    Oracle 分页存储过程

    一个高效的分页存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_condition VARCHAR2, p_page_num NUMBER, p_records_per_page NUMBER, result OUT SYS_REFCURSOR ) AS v_...

    Oracle 分页存储过程 终极版

    在"Oracle分页存储过程.txt"中,可能包含了一个自定义的存储过程,该过程接受参数如页码和每页记录数,然后根据这些参数动态构建SQL语句。存储过程的优势在于可以封装复杂的逻辑,提高代码复用性,减少网络传输的...

    Oracle分页存储过程

    下面将详细介绍Oracle分页存储过程的实现原理、步骤及如何在C#中调用。 #### 存储过程设计 存储过程`proc_page`旨在通过动态SQL语句生成和执行来实现分页查询。其参数设计如下: 1. **`p_tablename`**: 表名,...

    Oracle 分页的存储过程

    总结来说,Oracle分页存储过程是通过动态构造SQL语句,结合输入的分页参数,计算出总页数,并返回指定页的数据。这种方式在处理大量数据时提高了效率,同时也提供了灵活的查询控制。通过包装这些逻辑在存储过程中,...

    Oracle 高效分页存储过程(修改)

    本文将深入探讨Oracle数据库中的高效分页存储过程及其修改版。 首先,我们要理解什么是分页查询。分页查询是数据库中的一种查询策略,它将结果集分为多个部分,每次只返回一部分(一页)结果给用户。这通常涉及到两...

    ORACLE分页存储过程

    在分页存储过程中,主要理解了变量的动态赋值和输入输出参数的使用就非常简单了 下面为调用方法: var c_Preccount number; var c_Ppagecount number; var c_cur refcursor; exec proc_SpPag(1,'SELECT * FROM T_...

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

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    Oracle通用数据库存储过程代码--高效分页存储过程

    ### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...

    Oracle自定义数据分页存储过程

    总的来说,通过自定义的Oracle分页存储过程,开发者可以方便地实现数据库的高效分页查询,同时保持代码的整洁和可维护性。在实际项目中,可以根据具体需求进行调整和优化,以达到最佳性能和用户体验。

    asp.net使用oracle分页存储过程查询数据

    功能说明 写好oracle的连接字符串和查询语句,调用程序中的方法可以很方便的实现分页功能。该方法中,将参数连接字符串,查询的sql语句,... 效率不是很高,如有高人写出很厉害的分页存储过程,希望您与大家分享。

    Oracle通用分页存储过程

    以下是一个简单的Oracle分页存储过程示例: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_page_size IN NUMBER, p_current_page IN NUMBER, p_table_name IN VARCHAR2, p_sort_column IN VARCHAR2, ...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    Oracle 存储过程分页

    Oracle 提供了多种方法实现分页查询,下面我们将详细探讨Oracle存储过程中的分页实现。 1. **ROWNUM伪列** 在早期的Oracle版本中,ROWNUM伪列被广泛用于分页。ROWNUM是在结果集生成时自动分配的,表示每一行的顺序...

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

    本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在数据库中的可编程对象,可以接受参数、执行操作、返回结果。 2. **分页**:通过限制查询...

    带排序的oracle分页存储过程

    ### 带排序的Oracle分页存储过程 在开发Web应用程序的过程中,分页是一个非常常见的需求。为了提高系统的性能及可维护性,采用存储过程来实现分页逻辑是一种较为推荐的做法。下面将详细介绍如何利用Oracle数据库中...

    Oracle 分页存储过程 SQL

    Oracle 分页存储过程 SQL Oracle 分页存储过程 SQL

    oracle 增加,删除,修改和分页存储过程

    在这个“Oracle增加、删除、修改和分页存储过程”项目中,我们将深入探讨这四个核心的数据库管理功能,并了解如何在PL/SQL环境中实现它们。 1. **增加(Insertion)**: 在Oracle中,创建一个用于插入数据的存储...

Global site tag (gtag.js) - Google Analytics