Java调用oracle存储过程通过游标返回临时表数据
2017-02-22 09:53
926 查看
项目开发过程中,不可避免的会用到存储过程返回结果集。特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇:
1.存储过程返回结果集
2.Java中执行存储过程以及多结果集处理
3.返回临时表中数据
[java]
view plain
copy
print?
package com.zjhcsoft.test.utl;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
public class TestOracleProc3 {
/**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
Connection conn = null;
String DBurl = "jdbc:oracle:thin:@134.98.8.168:1521:ora817";
try {
conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123");
System.out.println("Getting Connection...");
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123");
long start = System.currentTimeMillis();
//最关键一步
conn.setAutoCommit(false);
OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("{call sfz_obj.proc_sfz_proc_test(?,?)}");
cstmt.setString(1, "");
cstmt.registerOutParameter(2,OracleTypes.CURSOR);
cstmt.execute();
long end = System.currentTimeMillis();
System.out.println("this procedure consumes "+((end-start)/1000)+" excute time.");
start = System.currentTimeMillis();
int i=0;
ResultSet rs = (ResultSet)cstmt.getObject(2);
while (rs.next()) {
System.out.println("column"+(i+1)+":"+rs.getString(1)+", "+rs.getString(2)+", "+rs.getString(3));
i++;
}
System.out.println("this procedure has "+(i-1)+" data.");
end = System.currentTimeMillis();
System.out.println("show this procedure data consumes "+((end-start)/1000)+" excute time.");
conn.commit();
cstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文转自:http://blog.csdn.net/liangweiwei130/article/details/19539489
1.存储过程返回结果集
2.Java中执行存储过程以及多结果集处理
3.返回临时表中数据
[java]
view plain
copy
print?
package com.zjhcsoft.test.utl;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
public class TestOracleProc3 {
/**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
Connection conn = null;
String DBurl = "jdbc:oracle:thin:@134.98.8.168:1521:ora817";
try {
conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123");
System.out.println("Getting Connection...");
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(DBurl, "sfz2", "sfz2_123");
long start = System.currentTimeMillis();
//最关键一步
conn.setAutoCommit(false);
OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("{call sfz_obj.proc_sfz_proc_test(?,?)}");
cstmt.setString(1, "");
cstmt.registerOutParameter(2,OracleTypes.CURSOR);
cstmt.execute();
long end = System.currentTimeMillis();
System.out.println("this procedure consumes "+((end-start)/1000)+" excute time.");
start = System.currentTimeMillis();
int i=0;
ResultSet rs = (ResultSet)cstmt.getObject(2);
while (rs.next()) {
System.out.println("column"+(i+1)+":"+rs.getString(1)+", "+rs.getString(2)+", "+rs.getString(3));
i++;
}
System.out.println("this procedure has "+(i-1)+" data.");
end = System.currentTimeMillis();
System.out.println("show this procedure data consumes "+((end-start)/1000)+" excute time.");
conn.commit();
cstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文转自:http://blog.csdn.net/liangweiwei130/article/details/19539489
相关文章推荐
- Java调用oracle存储过程通过游标返回临时表数据
- Java调用oracle存储过程通过游标返回临时表数据
- java 调用oracle 分页存储过程 返回游标数据集
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- Oracle存储过程中执行查询返回的结果集,并使用java代码调用【转】
- java通过prepareCall调用oracle返回游标的存储过程
- 通过java调用存储过程往oracle数据库里插数据(无返回值)
- 存储过程建立临时表,通过游标增加数据
- (转载)oracle 在一个存储过程中调用另一个返回游标的存储过程
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- 如何通过java程序调用oracle中的存储过程
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- 如何在Delphi中调用oracle的存储过程返回数据集
- java 调用oracle的存储过程返回记录集
- Java 调用 Oracle 存储过程返回结果集
- java 调用oracle的存储过程返回记录集
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- Oracle 调用 JAVA 实战(通过 Oracle 存储过程读取服务器目录)
- java调用存储过程(返回游标变量,利用索引表,临时表)