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的数据量。...