`
showcup
  • 浏览: 25124 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java调用Oracle带结果集返回的存储过程

阅读更多
公司项目中强制使用存储过程,顺势学习下如何在程序中调用过程,借javaeye点地方保存点代码片段..........

创建过程:
--创建一张测试的表
create table t1(a number,b number ,c number,d number);
--创建一个包定义游标类型
create or replace package types
as
type cursorType is ref cursor;
end;
--创建存储过程
create or replace procedure getemps( io_cursor in out types.cursorType)
as
begin
       open io_cursor for select * from t1;
end;

借用Javaeye的地方保存点代码:

package org.sf.proc;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Types;

import oracle.jdbc.driver.OracleTypes;

public class Callprocedure {
	public static Connection getConnection() throws Exception {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection con = DriverManager.getConnection(
				"jdbc:oracle:thin:@172.16.29.39:1521:ORA10G", "fjh", "fjh");
		return con;
	}
	public static void callProcedure(Connection con) throws Exception {
		
		CallableStatement pstm = con.prepareCall("{call GETEMPS(?)}");
		pstm.registerOutParameter(1, OracleTypes.CURSOR);
		//pstm.setString(2, "30");
		pstm.execute();
		ResultSet rs = (ResultSet) pstm.getObject(1);

//		while (rs.next()) {
//			for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
//				System.out.print(rs.getString(i) + "  ");
//			}
//			System.out.println();
//		}
		pstm.close();
		rs.close();
	}
	public static void callSQL(Connection con) throws Exception {
		PreparedStatement ps=con.prepareStatement("select * from t1");
		//ps.setString(1, "30");
		ResultSet rs=ps.executeQuery();
//		while (rs.next()) {
//			for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
//				System.out.print(rs.getString(i) + "  ");
//			}
//			System.out.println();
//		}
		ps.close();
		rs.close();
	}
	public static void main(String[] args) throws Exception {
		Connection con=getConnection();
		
		long s1=System.currentTimeMillis();
		callProcedure(getConnection());
		long e1=System.currentTimeMillis();
		
		long s2=System.currentTimeMillis();
		callSQL(getConnection());
		long e2=System.currentTimeMillis();
		
		System.out.println("过程调用耗时:"+(e1-s1));
		System.out.println("SQL调用耗时:"+(e2-s2));
		
		//test(con);
	}
	
	public static void test(Connection con) throws Exception {
		PreparedStatement ps=con.prepareStatement("insert into t1 values(?,?,?,?)");
		ps.setInt(1, 1);
		ps.setInt(2, 2);
		ps.setInt(3, 3);
		ps.setInt(4, 4);
		for (int i = 0; i < 50000; i++) {
			ps.execute();
		}
		ps.close();
	}

	
}
分享到:
评论
4 楼 javatracker 2009-01-10  
发到入门讨论也行
3 楼 showcup 2009-01-10  
哦这样子啊,那我以后不贴到论坛上去了!
2 楼 javatracker 2009-01-10  
错不在楼主贴代码,写在自己blog中作为笔记也无可厚非,错就错在楼主不该把他发到论坛上
1 楼 mmwy 2009-01-09  
很奇怪,javaeye最近怎么越来越流行贴代码,而且还是动不动就连渣带汤的一鼓脑贴上来这种,贴关键性的代码不就行了么?

相关推荐

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

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

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

    java调用oracle含有clob参数的存储过程.doc

    "Java 调用 Oracle 含有 CLOB 参数的存储过程" Java 调用 Oracle 含有 CLOB 参数的存储过程是一种常用的数据库操作方式,下面是该过程的详细介绍: 1. 连接数据库 在 Java 中连接 Oracle 数据库需要使用 Oracle ...

    java调用oracle存储过程或者函数

    以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。

    Java调用带参数的存储过程并返回集合

    总结,Java调用Oracle存储过程涉及的关键点包括:JDBC连接,CallableStatement,输入/输出参数的设定,以及结果集的处理。理解这些知识点,能够帮助开发者有效地实现数据库操作,提升应用性能。

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    Spring jdbcTemplate调用Oracle存储过程返回List集合

    下面是使用 Spring jdbcTemplate 调用 Oracle 存储过程返回 List 集合的 Java 代码: ```java package com.zc.test; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql....

    用java调用oracle存储过程

    以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...

    Java调用Oracle存储过程

    本文主要探讨如何在Java中调用Oracle存储过程,以及如何通过Java创建Oracle存储过程。 首先,我们来看如何在Java中调用不带输出参数的Oracle存储过程。在给定的例子中,有一个名为`pro1`的存储过程,它接受一个整数...

    java调用Oracle存储过程的代码

    总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...

    Oracle存储过程返回结果集

    本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...

    Java调用oracle存储过程总结

    通过这些步骤,你可以成功地从Java应用程序中调用Oracle存储过程。确保正确配置JDBC驱动,理解存储过程的参数类型,并熟悉JDBC API,这样就能高效地实现数据交互了。在开发过程中,可以参考Oracle的官方文档以及各种...

    oracle的存储过程如何返回结果集

    ### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    java调用oracle存储过程并得到结果集

    在Java编程中,调用Oracle数据库的存储过程并获取结果集是一项常见的任务。在这个场景下,我们将使用JDK 1.5版本,MyEclipse集成开发环境,以及Oracle 11g数据库。以下是对这个主题的详细解释: 首先,我们需要确保...

    用java调用oracle存储过程总结

    } } catch (SQLException ex1) { } } }}```总结与注意事项调用Oracle存储过程在Java中主要使用`CallableStatement`,通过占位符`?`来代表参数,并使用`setXXX`方法设置IN参数,`registerOutParameter`注册OUT或IN...

    Java程序如何调用Oracle中的存储过程

    Java 程序调用 Oracle 中的存储过程 在 Java 程序中调用 Oracle 中的存储过程是非常实用的技术, 它可以帮助开发者将业务逻辑封装在存储过程中,以提高应用程序的性能和安全性。下面将详细介绍如何使 Java 类调用 ...

    JAVA调用ORACLE存储过程

    ### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...

    JAVA调用ORACLE存储过程通用类

    ### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...

    java调用oracle存储过程(游标)相关

    总之,Java调用Oracle存储过程,尤其是处理游标,需要理解JDBC的使用、Oracle特定的类型以及存储过程的参数传递方式。通过合理的编程实践,我们可以高效地在Java应用程序中集成Oracle数据库的复杂操作。

Global site tag (gtag.js) - Google Analytics