java调用Oracle分页存储过程

Java程序–创建游标包–存储过程推荐:http://www.cnblogs.com/roucheng/p/3504465.html

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120338.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月27日 上午11:00
下一篇 2021年12月27日 下午12:00


相关推荐

  • Python rstrip函数踩坑记录

    Python rstrip函数踩坑记录问题背景从许多中文的参考文献上 rstrip 函数的功能被简单描述为 删除字符串末尾的指定字符 默认为空格 我的理解是 直接去掉末尾指定的字符序列 如我传入的是 d 则会去掉末尾的字符 d 如果存在 如果传入了字符 ad 则去掉末尾的字符 ad 如果存在 直到我们开发的服务遇到了一个非常奇怪的 bug 之后 下面是奇怪问题的复现过程 gt gt gt s hello world

    2026年3月18日
    2
  • visio2016专业版2018最新密钥和下载方法 整理

    visio2016专业版2018最新密钥和下载方法 整理visio2016是目前微软最强大的图标制作软件,也是很难激活的。今天小编就给大家分享一下visio2016专业版的下载地址和激活方法,希望能给你带来方便。一,所有版本下载和更多有效的密钥www.dnbbn.com当然,也可以通过官网下载,登录setup.office.com.输入密钥识别后即可下载。二,激活。下载后可以输入一下密钥,但是说明一下,只适用于上述的专业版哈,其他版本无…

    2022年8月13日
    5
  • ​Anthropic 推出 Claude 插件更新,打通 Excel 与 PowerPoint 跨应用工作流

    ​Anthropic 推出 Claude 插件更新,打通 Excel 与 PowerPoint 跨应用工作流

    2026年3月13日
    2
  • ie9的兼容视图设置_ie9兼容性视图设置找不到

    ie9的兼容视图设置_ie9兼容性视图设置找不到ie9比ie8又向W3C标准靠近了一步,可能会导致原有的网页显示变乱;如果出现这种情况,选择ie9兼容性视图,网页显示就会正常。ie9分别有,为当前网页设置兼容性和为所有网站设置兼容性视图两种,下面分别说明:一、为当前网页设置兼容性视图1、快捷步骤:按alt键——工具——兼容性视图(V);或者按alt键——工具——按F12——浏览器模式(B):IE9——Internet…

    2025年10月9日
    6
  • ASP.net错误:Control’ctl00_ctl00_ContentPlaceHolder2[通俗易懂]

    ASP.net错误:Control’ctl00_ctl00_ContentPlaceHolder2[通俗易懂]表现:当然也可能是另外一个什么控件必须放置在Form里边。原因:如果是普通情况,当然直接加一个Form就可以了,但如果是使用了masterpage,这个错误的真正原因是在masterpage中ContentPlaceHolder被错误放置到<form>外面了:<formid=”form1″runat=”server”&g…

    2022年7月13日
    18
  • Midjourney怎样生成PPT配图_MidjourneyPPT配图教程【步骤】

    Midjourney怎样生成PPT配图_MidjourneyPPT配图教程【步骤】

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号