java读取oracle的存储过程(转 邢红瑞's blog)
java读取oracle的存储过程网上的例子不少,都太简单,没有一个返回参考游标的,返回记录集,自己写一个怕日后忘了。
oracle的PLSQL
CREATE OR REPLACE package chapter_13 as TYPE rs IS REF CURSOR ; procedure founder(oFields out rs);
end;
CREATE OR REPLACE package body chapter_13 as
PROCEDURE founder(oFields out rs) IS BEGIN open oFields for select * from person; END founder; end; java代码
package jdbc;
import java.io.*; import java.sql.*; import java.text.*; import oracle.jdbc.OracleTypes;
public class TestStoredProcedures { Connection conn;
public TestStoredProcedures() { try { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:orcl", "jola", "jola"); } catch (SQLException e) { System.err.println(e.getMessage()); e.printStackTrace(); } }
public static void main(String[] args) throws Exception { new TestStoredProcedures().process(); }
public void process() throws SQLException {
long start = 0; long end = 0; CallableStatement cstmt = null;
try { start = System.currentTimeMillis();
// *** SQL92 escape syntax ***
cstmt = conn.prepareCall( "{call chapter_13.founder(?)}"); cstmt.registerOutParameter(1, OracleTypes.CURSOR); ResultSet rs = null;
cstmt.execute(); rs = (ResultSet)cstmt.getObject(1); while (rs.next()) { System.out.println(rs.getString("NAME")); } rs.close();
end = System.currentTimeMillis(); System.out.println("Average elapsed time = " + (end - start) / 8 + " milliseconds"); } catch (SQLException e) { System.err.println("SQL Error: " + e.getMessage()); } finally { if (cstmt != null) { try { cstmt.close(); } catch (SQLException ignore) {} } } }
protected void finalize() throws Throwable { if (conn != null) { try { conn.close(); } catch (SQLException ignore) {} } super.finalize(); } }
|
相关推荐
本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...
在Java中调用Oracle存储过程,我们需要使用JDBC(Java Database Connectivity),这是Java标准库提供的一组接口和类,用于与各种数据库进行通信。首先,我们需要添加Oracle JDBC驱动到项目中,例如ojdbc.jar。 1. *...
本文将深入探讨如何使用Java来调用Oracle存储过程,特别是涉及游标的场景。 首先,Oracle存储过程是一种预编译的SQL和PL/SQL代码块,可以在数据库服务器端执行,提供了一种封装业务逻辑的方式。而游标(Cursor)在...
在Java编程中,Oracle存储过程的调用与标准输入(System.in)的交互可能会遇到一些问题,特别是当尝试使用System.in进行阻塞IO操作时。这个问题通常涉及到Java的多线程概念、I/O流的处理以及Oracle存储过程的执行...
本文将详细介绍如何在Java中实现对Oracle存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...
### Java调用Oracle存储过程与分页示例详解 #### 一、无返回值的存储过程调用 在Java中调用Oracle存储过程时,若该过程无返回值,主要利用`CallableStatement`对象来执行。以下是一个具体的示例: ##### 存储过程...
以下是如何使用Java调用Oracle存储过程的详细步骤: 首先,确保已经正确地安装和配置了JDK,包括设置好环境变量,以及Oracle的JDBC驱动(如ojdbc.jar或ojdbc14.jar)。这些驱动包提供了与Oracle数据库通信的接口。 ...
接下来,我们来看看如何在Java环境中调用这个Oracle存储过程。首先,你需要确保已经添加了Oracle JDBC驱动到你的项目类路径中。然后,可以使用`CallableStatement`接口来执行存储过程: ```java import java.sql.*;...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...
总结来说,这个示例展示了如何在Java中调用Oracle存储过程,处理返回的Record类型数据,并将这些数据以Cursor形式返回。在实际开发中,这种技术常用于处理复杂的业务逻辑,尤其是在需要大量自定义数据结构和返回多行...
- **Java调用Oracle存储过程**:使用Hibernate框架或纯Java代码可以实现调用Oracle存储过程的功能。 - 无返回值的存储过程调用较为简单。 - 有返回值的存储过程需要特别处理返回值。 - 返回列表的存储过程需通过...
在这个例子中,`my_procedure`是存储过程名,`123`是传递给存储过程的`IN`参数,而`OUT`参数是一个字符串类型,我们使用`getString()`方法读取。 请注意,不同的数据库可能需要不同的JDBC驱动和特定的语法。上述...
7. 使用Java调用Oracle存储过程分为三种情况:无返回值的过程、有单个返回值的过程和返回列表的过程。 **用Java调用Oracle存储过程总结** 1. 无返回值的存储过程:使用CallableStatement的`execute()`方法执行。 2....
在提供的`ConnUtils2.java`文件中,很可能包含了以上所述的Java数据库操作代码,例如建立JDBC连接、处理CLOB数据类型以及调用Oracle存储过程的方法。分析这个文件可以帮助我们更好地理解实际应用中的实现细节,包括...
使用 JAVA 读取 ORACLE BLOB 字段实现上传下载需要完成以下几个步骤:上传大对象、将大对象存储在数据库中、使用专门的函数来完成 BLOB 的使用。在 Struts 项目中,我们可以使用 Struts 的文件上传组件来上传大对象...
Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...
2. TXT 文件读取:TXT 文件是一种文本文件,用于存储文本数据。在本程序中,我们使用 Java 语言的 BufferedReader 类来读取 TXT 文件中的数据。 3. Oracle 数据库:Oracle 数据库是一种关系数据库管理系统,广泛...
对于输出参数,我们通常需要先设置一个`null`值,然后在调用存储过程后读取: ```java cs.registerOutParameter(1, Types.INTEGER); // 假设第一个参数是返回值,类型为INTEGER ``` 5. **执行存储过程**:调用`...
### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...