java调用Oracle分页存储过程
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();
} } }/* 何问起 hovertree.com */
--创建游标包
create or replace PACKAGE "PKG_QUERY" AS
type refCursorType is REF CURSOR; --游标类型定义,用于返回数据集
END;/* 何问起 hovertree.com */
--存储过程
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;/* 何问起 hovertree.com */
推荐:http://www.cnblogs.com/roucheng/p/3504465.html
java调用Oracle分页存储过程的更多相关文章
- java 调用oracle 分页存储过程 返回游标数据集
1.分页类 package org.zh.basic; /** * 页面类 * * @author keven * */ public class PageInfo { // 定义 private S ...
- java调用Oracle存储存储过程
数据库表和增删改的procedure参照(http://www.cnblogs.com/J-wym/p/3292913.html) 1.测试添加数据的procedure public void tes ...
- java下实现调用oracle的存储过程和函数
在Oracle下创建一个test的账户,然后 1.创建表:STOCK_PRICES --创建表格 CREATE TABLE STOCK_PRICES( RIC VARCHAR() PRIMARY KE ...
- java基础---->java调用oracle存储过程(转)
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天 ...
- Oracle分页存储过程及PLSQL中的调用脚本
撰写过程:网上搜集测试了好多的Oracle分页存储过程代码,经整理后终于通过测试,特分享给大家 测试步骤:1.运行创建包命令;2.运行创建存储过程命令;3.运行调用分页存储过程语句 测试环境:wind ...
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- java基础---->java调用oracle存储过程
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天 ...
- 【学习】java下实现调用oracle的存储过程和函数
在oracle下创建一个test的账户,然后按一下步骤执行: 1.创建表:STOCK_PRICES --创建表格CREATETABLE STOCK_PRICES( RIC VARCHAR(6) PRI ...
- 用java 调用oracle存储过程总结
SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例 https://www.jianshu.com/p/0ae6d9d66d61 用java调用oracle存储过程总结 //1.ca ...
随机推荐
- 让我欲罢不能的node.js
从我大一接触第一门编程语言C开始,到现在工作三年陆续接触到了C.汇编.C++.C#.Java.JavaScript.PHP,还有一些HTML.CSS神马的,从来没有一门语言让我像对node.js一样的 ...
- C#入门基础二
万物皆对象:对象是包含数据和操作的实体. 属性:名词 / 对象 \ 方法:动词 ============================================== ...
- Java中反射的理解
反射 一.什么是反射 Java 反射是Java语言的一个很重要的特征,它使得Java具体了"动态性". 反射用在 Java 身上指的是我们可以于运行时加载.探知.使用编译期间完全未 ...
- Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)
Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德) ...
- iOS-性能优化4
UITableView性能优化技巧 Table view需要有很好的滚动性能,不然用户会在滚动过程中发现动画的瑕疵. 为了保证table view平滑滚动,确保你采取了以下的措施: 正确使用`reus ...
- 谈谈主函数main
我们来看一下主函数 public class HelloWorld{ public static void main(String[] args){ System.out.println(" ...
- SOLID原则
SOLID是面向对象设计和编程(OOD&OOP)中几个重要编码原则 即:SRP单一责任原则: OCP开放封闭原则: LSP里氏替换原则: ISP接口分离原则: DIP依赖倒置原则. 1. 单一 ...
- 自制jQuery标签插件
在项目中需要一个添加标签的小插件,查看了一些已有插件后,发现很现成的高级插件,也有比较简单的插件.最后还是决定自己来写,这样能控制代码,以后与其他插件结合使用的时候能更好的把控.初步在IE6 7 8, ...
- 可视化工具gephi源码探秘(一)
今天在老大和小梁的鼓舞和忽悠下(^_^),我决定还是把之前下载好的gephi源码好好利用起来,不在朝三暮四的想d3js或是什么vizster,用心去选择一个自己熟悉的,而不是一直在各种困难之间来回徘徊 ...
- CSS3 过渡特性创建信封效果的联系表单
最近给大家分享 CSS3 效果比较多,都是充分运用了 CSS3 来实现的.通过 CSS3 的新特性,我们创作出好的交互和效果的可能性大大增加.这篇文章中,我想与大家分享使用 CSS3 过渡特性实现的信 ...