`

java读取oracle的存储过程

阅读更多

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存储过程通过游标返回临时表

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

    java调用oracle存储过程入门实例 增删改查

    在Java中调用Oracle存储过程,我们需要使用JDBC(Java Database Connectivity),这是Java标准库提供的一组接口和类,用于与各种数据库进行通信。首先,我们需要添加Oracle JDBC驱动到项目中,例如ojdbc.jar。 1. *...

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

    本文将深入探讨如何使用Java来调用Oracle存储过程,特别是涉及游标的场景。 首先,Oracle存储过程是一种预编译的SQL和PL/SQL代码块,可以在数据库服务器端执行,提供了一种封装业务逻辑的方式。而游标(Cursor)在...

    java编写oracle的存储过程,为什么调用System.in阻塞IO时不起作用?还报错?

    在Java编程中,Oracle存储过程的调用与标准输入(System.in)的交互可能会遇到一些问题,特别是当尝试使用System.in进行阻塞IO操作时。这个问题通常涉及到Java的多线程概念、I/O流的处理以及Oracle存储过程的执行...

    java调用oracle存储过程实现增删改查

    本文将详细介绍如何在Java中实现对Oracle存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...

    java调用oracle存储过程示例+分页示例

    ### Java调用Oracle存储过程与分页示例详解 #### 一、无返回值的存储过程调用 在Java中调用Oracle存储过程时,若该过程无返回值,主要利用`CallableStatement`对象来执行。以下是一个具体的示例: ##### 存储过程...

    如何实现Java对Oracle存储过程的调用.pdf

    以下是如何使用Java调用Oracle存储过程的详细步骤: 首先,确保已经正确地安装和配置了JDK,包括设置好环境变量,以及Oracle的JDBC驱动(如ojdbc.jar或ojdbc14.jar)。这些驱动包提供了与Oracle数据库通信的接口。 ...

    dba.rar_closelyq1i_diehbl_java_oracle_oracle 存储过程

    接下来,我们来看看如何在Java环境中调用这个Oracle存储过程。首先,你需要确保已经添加了Oracle JDBC驱动到你的项目类路径中。然后,可以使用`CallableStatement`接口来执行存储过程: ```java import java.sql.*;...

    java中读取ORACLE中BLOB字段存储的图片

    ### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...

    Oracle存储过程out游标

    在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...

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

    总结来说,这个示例展示了如何在Java中调用Oracle存储过程,处理返回的Record类型数据,并将这些数据以Cursor形式返回。在实际开发中,这种技术常用于处理复杂的业务逻辑,尤其是在需要大量自定义数据结构和返回多行...

    oracle存储过程学习经典[语法+实例+调用]

    - **Java调用Oracle存储过程**:使用Hibernate框架或纯Java代码可以实现调用Oracle存储过程的功能。 - 无返回值的存储过程调用较为简单。 - 有返回值的存储过程需要特别处理返回值。 - 返回列表的存储过程需通过...

    java调用存储过程(含out参数)

    在这个例子中,`my_procedure`是存储过程名,`123`是传递给存储过程的`IN`参数,而`OUT`参数是一个字符串类型,我们使用`getString()`方法读取。 请注意,不同的数据库可能需要不同的JDBC驱动和特定的语法。上述...

    Oracle+PlSql存储过程

    7. 使用Java调用Oracle存储过程分为三种情况:无返回值的过程、有单个返回值的过程和返回列表的过程。 **用Java调用Oracle存储过程总结** 1. 无返回值的存储过程:使用CallableStatement的`execute()`方法执行。 2....

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    在提供的`ConnUtils2.java`文件中,很可能包含了以上所述的Java数据库操作代码,例如建立JDBC连接、处理CLOB数据类型以及调用Oracle存储过程的方法。分析这个文件可以帮助我们更好地理解实际应用中的实现细节,包括...

    使用JAVA读取ORACLE_BLOB字段实现上传下载.doc

    使用 JAVA 读取 ORACLE BLOB 字段实现上传下载需要完成以下几个步骤:上传大对象、将大对象存储在数据库中、使用专门的函数来完成 BLOB 的使用。在 Struts 项目中,我们可以使用 Struts 的文件上传组件来上传大对象...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    用java编程将txt文件数据导入oracle

    2. TXT 文件读取:TXT 文件是一种文本文件,用于存储文本数据。在本程序中,我们使用 Java 语言的 BufferedReader 类来读取 TXT 文件中的数据。 3. Oracle 数据库:Oracle 数据库是一种关系数据库管理系统,广泛...

    用JDBC操作Oracle的存储过程返回值

    对于输出参数,我们通常需要先设置一个`null`值,然后在调用存储过程后读取: ```java cs.registerOutParameter(1, Types.INTEGER); // 假设第一个参数是返回值,类型为INTEGER ``` 5. **执行存储过程**:调用`...

    java存储oracle中的clob类型

    ### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...

Global site tag (gtag.js) - Google Analytics