java调用Oracle分页存储过程
来源:互联网 发布:网络抢答器 编辑:程序博客网 时间:2024/06/05 10:55
Java程序
package com.test;
import java.sql.CallableStatement;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import com.jdbc.BaseJdbcDAO;
import oracle.jdbc.OracleTypes;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Connection conn = BaseJdbcDAO.getConnection2("com");
String sqlSel = "SELECT * FROM POSITION";
String sqlCount = "SELECT COUNT(*) FROM POSITION";
String sql = "{ call SP_PAGE(?,?,?,?,?,?,?) }";
ResultSet rs = null;
try {
CallableStatement call = conn.prepareCall(sql);
call.setInt(1, 20);
call.setInt(2, 100);
call.setString(3, sqlSel);
call.setString(4, sqlCount);
call.registerOutParameter(5, Types.INTEGER);
call.registerOutParameter(6, Types.INTEGER);
call.registerOutParameter(7, OracleTypes.CURSOR);
call.execute();
// 取出结果集
int pageCount = call.getInt(5);//总页数
int total = call.getInt(6);//总记录数
rs = (ResultSet) call.getObject(7);//信息列表集
System.out.println("页总数:" + pageCount);
System.out.println("记录总数:" + total);
int i = 1;
while (rs.next()) {
System.out.println(">>" + i + "号码:" + rs.getString(2) + "名称:"
+ rs.getString(3) + "序号:" + rs.getInt(1));
i++;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
--创建游标包
create or replace PACKAGE "PKG_QUERY" AS
type refCursorType is REF CURSOR; --游标类型定义,用于返回数据集
END;
--存储过程
create or replace procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_pageCount out int,--总共多少页
p_OutRecordCount out int,--返回总记录数
p_OutCursor out PKG_QUERY.refCursorType)
as
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;
--计算mypageCount--
if mod(v_count,p_PageSize)=0 then
p_pageCount:=v_count/p_PageSize;
else
p_pageCount:=v_count/p_PageSize+1;
end if;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize + 1;
v_sql := 'SELECT B.* 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;
- java调用Oracle分页存储过程
- Java调用Oracle的分页存储过程
- Java调用Oracle分页存储过程
- java调用分页存储过程
- Java调用Oracle数据库的分页存储过程
- Oracle分页存储过程及java的具体调用方法
- oracle存储过程分页以及在java中调用
- oracle存储过程实现JAVA调用的分页
- java调用oracle数据库的分页存储过程
- java Oracle存储过程分页
- java Oracle存储过程分页
- java Oracle存储过程分页
- C#调用Oracle存储过程分页
- C#调用Oracle存储过程分页
- Oracle通用分页存储过程JDBC调用
- C#调用Oracle存储过程分页
- oracle实现存储过程的分页并用java代码调用存储过程
- java调用oracle存储过程
- Java development pattern
- Linux中cp直接覆盖不提示的好办法!
- 给母版页赋值
- linux ubuntu 如何安装openFetion
- Windows 下 Apache + JK Connection + Tomcat负载均衡配置实践
- java调用Oracle分页存储过程
- HDOJ题目分类
- iptables 做网关
- 如何盖住Flash,遮盖flash方法让flash在最下层显示
- C++中头文件与源文件的区别
- Squid mainInitialize()函数分析
- 在内核中增加对yaffs文件系统的支持
- 从资源管理器托拽文件到CListCtrl
- 四极管:WinCE 电源管理概述(三)