---开始编写分页的存储过程
---编写一个包
create or replace package testpackage as
type test_curror is ref cursor;
end testpackage;
这个包和存储过程要分开执行。要不会提示错误
create or replace procedure fenye
( tableName in varchar2,
Pagesize in number,
pageNow in number,
myrows out number,----总记录数
mypageCount out number,---总页数
p_cursor out testpackage.test_curror ----返回的记录集
) is
--定义部分
---定义一个sql语句。字符串
v_sql varchar2(1000);
-----定义两个整数
v_begin number:=(pageNow-1)*Pagesize+1;
v_end number:=pageNow*Pagesize;
begin
---执行部分
v_sql:='select * from (select t1.*,rownum rn from (select * from '|| tableName
||') t1 where rownum <='||v_end||') where rn>='||v_begin;
---把游标和sql关联
open p_cursor for v_sql;
---计算myrows和myPageCount
---组织了一个SQL语句
v_sql:='select count(*) from '||tableName;
----执行一个SQL,并把返回的值赋给myrows
execute immediate v_sql into myrows;
---计算mypageCount
if mod(myrows,Pagesize)=0 then
myPageCount:=myrows/Pagesize;
else
myPageCount:=myrows/Pagesize+1;
end if;
---关闭游标
---close p_
end;
java代码:
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","hg","hg");
CallableStatement cs=ct.prepareCall("{call fenye(?,?,?,?,?,?)}");
//给问号赋值
cs.setString(1, "emp");
cs.setInt(2, 5);//一页显示几条
cs.setInt(3, 1);//第几页
//输出的参数
//返总也记录数
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
//返回总页数
cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
//返回结果集
cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
//取出总记录数--这里getInt里的4是根据你前面该参数的位置决定的
//忘了执行了。。。。
cs.execute();
int rowNum=cs.getInt(4);
int pageCount=cs.getInt(5);
ResultSet rs=(ResultSet)cs.getObject(6);
//显示结果,测试
System.out.println("总共页数为"+pageCount+"每页显示的页数为:5");
System.out.println("rowNum:"+rowNum);
System.out.println("总页数:"+pageCount);
while (rs.next()) {
System.out.println("编号:"+rs.getInt(1)+"姓名:"+rs.getString(2));
}
System.out.println("success!!!!!!!!!!!!!!!!!");
} catch (Exception e) {
// TODO: handle exception
}
看到success!!!!!!的时候说明分页效果执行了!
分享到:
相关推荐
ibatis调用oracle存储过程分页
Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...
在调用过程中,可能会遇到SQL异常或其他运行时异常,需要使用try-catch-finally结构进行异常处理。捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,...
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...
### Java调用Oracle存储过程与分页示例详解 #### 一、无返回值的存储过程调用 在Java中调用Oracle存储过程时,若该过程无返回值,主要利用`CallableStatement`对象来执行。以下是一个具体的示例: ##### 存储过程...
本篇文章将深入探讨如何在Oracle中通过调用存储过程实现分页功能。 首先,我们需要创建一个存储过程,这个过程将接收两个参数:起始记录编号(一般为当前页数乘以每页显示的记录数)和每页的记录数。存储过程内部会...
以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...
在这个毕业设计项目中,我们主要探讨的是如何使用Java语言调用Oracle数据库的存储过程来实现分页功能,这在Web应用程序中非常常见,尤其是在处理大数据量时,为了提高用户体验,分页是一种有效的数据展示方式。...
在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...
### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...
本教程将详细讲解如何在Java中调用Oracle存储过程。 首先,确保你已经安装了Oracle JDBC驱动(ojdbc.jar),这是连接Oracle数据库的必备组件。通常,它可以从Oracle官方网站下载或通过Maven仓库引入。在你的项目中...
通过这些步骤,你可以成功地从Java应用程序中调用Oracle存储过程。确保正确配置JDBC驱动,理解存储过程的参数类型,并熟悉JDBC API,这样就能高效地实现数据交互了。在开发过程中,可以参考Oracle的官方文档以及各种...
### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...
本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...