`
zhouxiaojiang
  • 浏览: 1081 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类

java调用oracle的存储过程分页代码

阅读更多
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;

 

 

 

如有更好的建议可以给我留言谢谢!

分享到:
评论
1 楼 Lucky_Man 2011-04-14  

相关推荐

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    java Oracle存储过程分页整理

    本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...

    java调用oracle分页存储过程

    Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...

    java调用oracle存储过程示例+分页示例

    ### Java调用Oracle存储过程与分页示例详解 #### 一、无返回值的存储过程调用 在Java中调用Oracle存储过程时,若该过程无返回值,主要利用`CallableStatement`对象来执行。以下是一个具体的示例: ##### 存储过程...

    毕业设计-源码Java调用Oracle存储过程实现分页功能

    在这个毕业设计项目中,我们主要探讨的是如何使用Java语言调用Oracle数据库的存储过程来实现分页功能,这在Web应用程序中非常常见,尤其是在处理大数据量时,为了提高用户体验,分页是一种有效的数据展示方式。...

    oracle调用存储过程实现分页

    总的来说,Oracle调用存储过程实现分页是一种有效的方法,它允许我们封装复杂逻辑,提高代码复用性,并且可以通过优化SQL来提升查询效率。在Web应用中,配合适当的调用方式,可以实现与前端的无缝对接,为用户提供...

    java调用存储过程.txt

    根据提供的文件信息,我们可以归纳出以下关于Java调用Oracle存储过程的关键知识点: ### 一、Java连接Oracle数据库 为了能够调用Oracle存储过程,首先需要建立Java程序与Oracle数据库之间的连接。这通常通过JDBC...

    Java获取Oracle存储过程返回的Cursor

    在Java编程中,有时我们需要调用Oracle数据库的存储过程,特别是当存储过程返回一个游标(Cursor)时,这种情况在处理大量数据或者分页查询时很常见。游标允许我们逐行处理结果集,而无需一次性加载所有数据,这对于...

    Oracle Java 存储过程分页

    java调用Oracle的分页存储过程,只要简单的处理就能实现常用的功能,固定的过程实现对不同表数据的分页,是一段好用的代码

    java连接Oracle分页显示

    在Java中,我们可以使用JDBC(Java Database Connectivity)来连接Oracle数据库并执行上述SQL语句或调用存储过程。以下是一个基本的示例: ```java import java.sql.*; public class OraclePagingExample { ...

    oracle存储过程分页

    总结:本文详细介绍了 Oracle 存储过程中的分页技术,包括基本的存储过程创建方法、分页逻辑的实现以及如何使用 Java 调用这些存储过程。这些技术对于处理大量数据时非常有用,能够提高应用程序的性能和响应速度。

    oracle 存储过程分页

    本文详细介绍了Oracle存储过程实现分页查询的方法,包括存储过程的设计、实现原理以及Java调用示例。这种方法不仅能够提高查询效率,还能够简化前端展示逻辑,是处理大数据量场景下的有效手段。

    oracle存储过程学习经典[语法+实例+调用].doc

    - **用Java调用Oracle存储过程**:使用`CallableStatement`接口来调用存储过程,设置输入参数,执行存储过程并获取输出结果。 #### 动态查询在存储过程中的应用 - **本地动态SQL**:在存储过程中构建动态SQL语句,...

    oracle存储过程学习经典

    5. **调用Oracle存储过程**:通过Java或Hibernate等工具调用Oracle存储过程,需要注意参数传递和结果集的处理。 #### 动态SQL与存储过程 在存储过程中执行动态SQL,有两种主要方式: 1. **本地动态SQL**:适用于...

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

    以下是一个使用JDBC调用Oracle存储过程的示例: ```java CallableStatement cs = connection.prepareCall("{call page_pkg.get_paged_data(?,?,?)}"); cs.setInt(1, pageNum); // 设置页码 cs.setInt(2, pageSize);...

    oracle存储过程学习经典[语法+实例+调用]

    - **Java调用Oracle存储过程**:使用Hibernate框架或纯Java代码可以实现调用Oracle存储过程的功能。 - 无返回值的存储过程调用较为简单。 - 有返回值的存储过程需要特别处理返回值。 - 返回列表的存储过程需通过...

    oracle 存储过程学习经典

    #### 八、Java调用Oracle存储过程 - **无返回值的存储过程**: 可以直接调用存储过程,无需关注返回值。 - **有返回值的存储过程**: - 非列表返回: 通常使用简单的数据类型作为返回值。 - 列表返回: 使用游标或...

    oracle 存储过程 用于分页

    通过以上介绍,我们可以看到如何使用Oracle存储过程实现分页功能,并通过Java程序调用这些存储过程。这种方法不仅提高了数据库操作的性能,也简化了前端应用的开发工作。同时,这种方法具有很好的可扩展性和灵活性,...

    oracle存储过程(语法实例).pdf

    Java可以通过JDBC调用Oracle存储过程,包括`CallableStatement`对象来执行过程并处理输入/输出参数。 9. **更新与权限保留** 使用`CREATE OR REPLACE PROCEDURE`语句更新存储过程时,原有执行权限不会丢失。 10....

Global site tag (gtag.js) - Google Analytics