设为首页 收藏本站
查看: 700|回复: 0

[经验分享] 在Java中执行Oracle分页的存储过程

[复制链接]
YunVN网友  发表于 2016-8-13 07:24:19 |阅读模式
package com.ztf.test;




import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;




import oracle.jdbc.driver.OracleTypes;







public class TestProcedure {




/**

* @param args

*/

public static void main(String[] args) {

String driver = "oracle.jdbc.driver.OracleDriver";

String url="jdbc:oracle:thin:@127.0.0.1:1521:ZTF";

String user = "scott";

String pass="tiger";

Connection conn=null;


try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}


try {

conn = DriverManager.getConnection(url, user, pass);

} catch (SQLException e) {

e.printStackTrace();

}

//String sql = "{call pro_emp(?,?)}";

//try {

//CallableStatement cst =conn.prepareCall(sql);

//cst.setString(1, "SCOTT");

//cst.registerOutParameter(2, OracleTypes.INTEGER);

//cst.execute();

//System.out.println(cst.getInt(2));

//

//} catch (SQLException e) {

//e.printStackTrace();

//}




// 执行 带游标返回值的存储过程

//String sql ="{call pro_emp2(?)}";

//try {

//CallableStatement cst = conn.prepareCall(sql);

//cst.registerOutParameter(1, OracleTypes.CURSOR);

//cst.execute();

//ResultSet rs =(ResultSet) cst.getObject(1);

//while(rs.next()){

//System.out.print(rs.getString("DEPTNO")+"  ");

//System.out.print(rs.getString("SAL")+"  ");

//System.out.print(rs.getString("ENAME")+"  ");

//System.out.print(rs.getString("EMPNO")+"  ");

//System.out.println();

//}

//

//} catch (SQLException e) {

//e.printStackTrace();

//}


//

////以分页的方式显示数据

//int page =2;

//int size=3;

//String sql="{call pro_emp3(?,?,?,?)}";

//try {

//CallableStatement cst = conn.prepareCall(sql);

//cst.setInt(1, page);//设置显示的页数;

//cst.setInt(2, size);//设置每页显示的条数;

//cst.registerOutParameter(3,OracleTypes.CURSOR);

//cst.registerOutParameter(4, OracleTypes.INTEGER);

//cst.execute();

//ResultSet rs =(ResultSet)cst.getObject(3);

//int content = cst.getInt(4);

//System.out.println("当前结果共有:"+content+"条");

//System.out.println("当前页为:"+page);

//while(rs.next()){

//System.out.print(rs.getString("RN")+"  ");

//System.out.print(rs.getString("DEPTNO")+"  ");

//System.out.print(rs.getString("ENAME")+"  ");

//System.out.print(rs.getString("SAL")+"  ");

//System.out.print(rs.getString("EMPNO")+"  ");

//System.out.print(rs.getString("COMM")+"  ");

//System.out.println("");

//}

//

//} catch (SQLException e) {

//e.printStackTrace();

//}




//根据不同的表进行分页;

String sql="{call pro_emp4(?,?,?,?,?,?)}";

int page=1;

int sizes=3;

String tableName="EMP";

try {

CallableStatement cst =conn.prepareCall(sql);

cst.setInt(1, page);

cst.setInt(2, sizes);

cst.setString(3, tableName);

cst.registerOutParameter(4,OracleTypes.INTEGER);

cst.registerOutParameter(5,OracleTypes.INTEGER);

cst.registerOutParameter(6,OracleTypes.CURSOR);

cst.execute();

ResultSet rst = (ResultSet) cst.getObject(6);

System.out.println("总记录数 :"+cst.getInt(4));

System.out.println("总页数:"+cst.getInt(5));

System.out.println("当前页数为:"+page);

int totle = (rst.getMetaData().getColumnCount());


while(rst.next()){

for(int i=1;i<=totle;i++){

System.out.print(rst.getString(i)+"   ");

if(i==totle){

System.out.println("");

}

}

}

} catch (SQLException e) {

e.printStackTrace();

}

}




}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257115-1-1.html 上篇帖子: Oracle中中的临时表(工作中使用真实表) 下篇帖子: 再次测试Oracle 10g支持跨resetlogs恢复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表