java调用Oracle数据库返回游标分页的代码
/**
*
*/
package com.xbkj.cursorProcedure;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author Administrator
*
*/
public class marks {
/**
* @param args
*/
public static void main(String[] args) {
String driver="oracle.jdbc.driver.OracleDriver";
String password = "xmgl";
String username = "xmgl";
String url = "jdbc:oracle:thin:@localhost:1521:xmgl";
try {
Class.forName(driver);
Connection cn = DriverManager.getConnection(url, username, password);
CallableStatement ca = cn.prepareCall("{call cursos.dept_test(?,?,?,?,?,?)}");
//给?赋值
ca.setString(1, "dept");
ca.setInt(2, 5);
ca.setInt(3, 1);
//注册一个总记录数
ca.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
//注册一个总页数
ca.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
//注册返回的结果集
ca.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
ca.execute();
int rownum=ca.getInt(4);//注册总记录数
int pagecount=ca.getInt(5);//注册一个总页数
System.out.println("总记录数"+rownum);
System.out.println("总页数"+pagecount);
ResultSet rs=(ResultSet) ca.getObject(6);
while(rs.next()){
System.out.println("编号:"+rs.getInt(1)+" 部门名称:"+rs.getString(2));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Oracle存储过程分页返回游标的代码
1、 Oracle创建包的代码
create or replace package cursos is
type dept is ref cursor;
procedure dept_test(
tables in varchar2,--传入一个表
pageSize in number,--传入每页大小
pagecount in number,--传一个页数
myrows out number,--返回一个总记录数
mypageCount out number,--返回一个总页数
depts out cursos.dept--返回一个结果集
);
end;
2、创建Oracle包体的代码
create or replace package body cursos is
procedure dept_test(
tables in varchar2,--传入一个表
pageSize in number,--每页大小
pagecount in number,--传入一个页数
myrows out number,--返回一个总记录数
mypageCount out number,--返回一个总页数
depts out cursos.dept--返回一个结果集
)is
v_sql varchar2(2000);
v_begin number:=(pagecount-1)*pageSize+1;
v_end number:=pagecount*pageSize;
begin
--拼接sql语句
v_sql:='select * from(select t1.*,rownum rn from (select * from '|| tables||') t1
where rownum<='||v_end||') where rn>='||v_begin||'';
--打开游标
open depts for v_sql;
v_sql :='select count(*) from '||tables||'';
--执行SQL语句并把返回的值赋给myrows
execute immediate v_sql into myrows;
if mod(myrows,pageSize)=0 then
mypageCount :=myrows/pageSize;
else
mypageCount :=myrows/pageSize+1;
end if;
end;
end;
如有更好的建议可以给我留言谢谢!
分享到:
相关推荐
ibatis调用oracle存储过程分页
本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...
Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...
### Java调用Oracle存储过程与分页示例详解 #### 一、无返回值的存储过程调用 在Java中调用Oracle存储过程时,若该过程无返回值,主要利用`CallableStatement`对象来执行。以下是一个具体的示例: ##### 存储过程...
在这个毕业设计项目中,我们主要探讨的是如何使用Java语言调用Oracle数据库的存储过程来实现分页功能,这在Web应用程序中非常常见,尤其是在处理大数据量时,为了提高用户体验,分页是一种有效的数据展示方式。...
总的来说,Oracle调用存储过程实现分页是一种有效的方法,它允许我们封装复杂逻辑,提高代码复用性,并且可以通过优化SQL来提升查询效率。在Web应用中,配合适当的调用方式,可以实现与前端的无缝对接,为用户提供...
根据提供的文件信息,我们可以归纳出以下关于Java调用Oracle存储过程的关键知识点: ### 一、Java连接Oracle数据库 为了能够调用Oracle存储过程,首先需要建立Java程序与Oracle数据库之间的连接。这通常通过JDBC...
在Java编程中,有时我们需要调用Oracle数据库的存储过程,特别是当存储过程返回一个游标(Cursor)时,这种情况在处理大量数据或者分页查询时很常见。游标允许我们逐行处理结果集,而无需一次性加载所有数据,这对于...
java调用Oracle的分页存储过程,只要简单的处理就能实现常用的功能,固定的过程实现对不同表数据的分页,是一段好用的代码
在Java中,我们可以使用JDBC(Java Database Connectivity)来连接Oracle数据库并执行上述SQL语句或调用存储过程。以下是一个基本的示例: ```java import java.sql.*; public class OraclePagingExample { ...
总结:本文详细介绍了 Oracle 存储过程中的分页技术,包括基本的存储过程创建方法、分页逻辑的实现以及如何使用 Java 调用这些存储过程。这些技术对于处理大量数据时非常有用,能够提高应用程序的性能和响应速度。
本文详细介绍了Oracle存储过程实现分页查询的方法,包括存储过程的设计、实现原理以及Java调用示例。这种方法不仅能够提高查询效率,还能够简化前端展示逻辑,是处理大数据量场景下的有效手段。
- **用Java调用Oracle存储过程**:使用`CallableStatement`接口来调用存储过程,设置输入参数,执行存储过程并获取输出结果。 #### 动态查询在存储过程中的应用 - **本地动态SQL**:在存储过程中构建动态SQL语句,...
5. **调用Oracle存储过程**:通过Java或Hibernate等工具调用Oracle存储过程,需要注意参数传递和结果集的处理。 #### 动态SQL与存储过程 在存储过程中执行动态SQL,有两种主要方式: 1. **本地动态SQL**:适用于...
以下是一个使用JDBC调用Oracle存储过程的示例: ```java CallableStatement cs = connection.prepareCall("{call page_pkg.get_paged_data(?,?,?)}"); cs.setInt(1, pageNum); // 设置页码 cs.setInt(2, pageSize);...
- **Java调用Oracle存储过程**:使用Hibernate框架或纯Java代码可以实现调用Oracle存储过程的功能。 - 无返回值的存储过程调用较为简单。 - 有返回值的存储过程需要特别处理返回值。 - 返回列表的存储过程需通过...
#### 八、Java调用Oracle存储过程 - **无返回值的存储过程**: 可以直接调用存储过程,无需关注返回值。 - **有返回值的存储过程**: - 非列表返回: 通常使用简单的数据类型作为返回值。 - 列表返回: 使用游标或...
通过以上介绍,我们可以看到如何使用Oracle存储过程实现分页功能,并通过Java程序调用这些存储过程。这种方法不仅提高了数据库操作的性能,也简化了前端应用的开发工作。同时,这种方法具有很好的可扩展性和灵活性,...
Java可以通过JDBC调用Oracle存储过程,包括`CallableStatement`对象来执行过程并处理输入/输出参数。 9. **更新与权限保留** 使用`CREATE OR REPLACE PROCEDURE`语句更新存储过程时,原有执行权限不会丢失。 10....