博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java调用oracle存储过程通过游标返回临时表数据
阅读量:6074 次
发布时间:2019-06-20

本文共 2307 字,大约阅读时间需要 7 分钟。

注:本文来源于 《     》

Java调用oracle存储过程通过游标返回临时表数据

 

 

  项目开发过程中,不可避免的会用到存储过程返回结果集。特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇:

       1.存储过程返回结果集

       2.Java中执行存储过程以及多结果集处理

       3.返回临时表中数据

 

 

 

1 package com.zjhcsoft.test.utl;  2   3 import java.sql.CallableStatement;  4 import java.sql.Connection;  5 import java.sql.DriverManager;  6 import java.sql.ResultSet;  7   8 import oracle.jdbc.OracleCallableStatement;  9 import oracle.jdbc.driver.OracleTypes; 10  11 public class TestOracleProc3 { 12  13 	/** 14 	 * @param args 15 	 */ 16 	public static void main(String[] args) { 17 		try { 18 			Class.forName("oracle.jdbc.driver.OracleDriver"); 19 		} catch (Exception e) { 20 			e.printStackTrace(); 21 		} 22  23 		Connection conn = null; 24 		String DBurl = "jdbc:oracle:thin:@134.98.8.168:1521:ora817"; 25 		try { 26 			conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123"); 27 			System.out.println("Getting Connection..."); 28 			conn.close(); 29 		} catch (Exception e) { 30 			e.printStackTrace(); 31 		} 32  33 		try { 34 			conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123"); 35 			long start = System.currentTimeMillis(); 36 			//最关键一步 37 			conn.setAutoCommit(false); 38 			OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("{call sfz_obj.proc_sfz_proc_test(?,?)}"); 39 			cstmt.setString(1, ""); 40 			cstmt.registerOutParameter(2,OracleTypes.CURSOR); 41 			cstmt.execute(); 42 			long end = System.currentTimeMillis(); 43 			System.out.println("this procedure consumes "+((end-start)/1000)+" excute time."); 44 			start = System.currentTimeMillis(); 45 			int i=0; 46 			ResultSet rs = (ResultSet)cstmt.getObject(2); 47 			   while (rs.next()) { 48 				   System.out.println("column"+(i+1)+":"+rs.getString(1)+",  "+rs.getString(2)+",  "+rs.getString(3)); 49 				   i++; 50 			   } 51 			   System.out.println("this procedure has "+(i-1)+" data."); 52 			end = System.currentTimeMillis(); 53 			System.out.println("show this procedure data consumes "+((end-start)/1000)+" excute time."); 54 			conn.commit(); 55 			cstmt.close(); 56 			conn.close(); 57 		} catch (Exception e) { 58 			e.printStackTrace(); 59 		} 60 	} 61  62 } 63

 

 

 

 

 

 

 

 

 

 

————————————————————————————————————————————————————————————————————————————————————————————

转载地址:http://klngx.baihongyu.com/

你可能感兴趣的文章
关于消息队列的使用
查看>>
对象的创建与销毁
查看>>
case功能菜单选项
查看>>
HP ILO2 使用详细教程
查看>>
Scout YYF I (概率+矩阵快速幂)
查看>>
Reverse and Compare(DP)
查看>>
1503 猪和回文(DP)
查看>>
345. 反转字符串中的元音字母
查看>>
在浏览器输入URL后发生了什么?
查看>>
高德地图定位之浏览器定位
查看>>
[ HNOI 2005 ] 狡猾的商人
查看>>
神经网络建模的一些感悟;
查看>>
FTPS (FTP over SSL) vs. SFTP (SSH 文件传输协议): 我们如何做出选择
查看>>
steam账号分享工具、迅游账号分享工具说明:
查看>>
c++中冒号(:)和双冒号(::)的用法
查看>>
ServletContext保存访问量
查看>>
IMSI,TMSI的关系
查看>>
JPA + Hibernate + PostgreSQL + Maven基本配置示例
查看>>
vue cordova生成app
查看>>
Kubernetes安装部署演示介绍
查看>>