`
kongzimengsheng1
  • 浏览: 68762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jdbc oracle 过程调用

    博客分类:
  • java
阅读更多
jdbc调用返回游标的oracle存储过程
文章分类:Java编程

项目中学习技术,这句话真是有道理啊,呵呵

在此次项目中,由于sql比较复杂,就使用存储过程来处理,但是需要返回一个数据集,这就想到了使用游标,但是之前的项目一直没有用过,需要学习一下。今天周末,就利用这个时间收集资料,学习了一下,下面将学习结果总结如下。

表结构:

create table item

(
      item_id varchar2(32),

      itemname varchar2(50)

)

一.写一个返回游标的存储过程
Sql代码

   1. create or replace procedure getcur(p_rc out sys_refcursor)  
   2.     is  
   3.      begin  
   4.           open p_rc for 'select * from item';  
   5. end getcur;  

create or replace procedure getcur(p_rc out sys_refcursor)
    is
     begin
          open p_rc for 'select * from item';
end getcur;

 sys_refcursor这个是oracle自带的返回游标的类型。

二.写一段pl/sql测试一下存储过程是否正确
Sql代码

   1. declare   
   2.       items sys_refcursor;  
   3.   begin  
   4.        getcur(items);  
   5.        for item in items  
   6.        loop  
   7.            dbms_output.put_line(item.itemname);  
   8.        end loop;  
   9.  end;  

 declare 
       items sys_refcursor;
   begin
        getcur(items);
        for item in items
        loop
            dbms_output.put_line(item.itemname);
        end loop;
  end;

 

三.写一段java代码测试
Java代码

   1. public void testcur() {  
   2.  Connection conn = this.getSession().connection();  
   3.  CallableStatement callsta = null;  
   4.  ResultSet rs = null;  
   5.  try {  
   6.   callsta = conn.prepareCall("{call getcur(?)}");  
   7.   callsta.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);  
   8.   callsta.execute();  
   9.   rs = (ResultSet)callsta.getObject(1);  
  10.   while(rs.next()){  
  11.    System.out.println(rs.getString(1));  
  12.   }  
  13.   rs.close();  
  14.   callsta.close();  
  15.   conn.close();  
  16.  } catch (Exception e) {  
  17.   e.printStackTrace();  
  18.  }  
  19. }  

public void testcur() {
 Connection conn = this.getSession().connection();
 CallableStatement callsta = null;
 ResultSet rs = null;
 try {
  callsta = conn.prepareCall("{call getcur(?)}");
  callsta.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
  callsta.execute();
  rs = (ResultSet)callsta.getObject(1);
  while(rs.next()){
   System.out.println(rs.getString(1));
  }
  rs.close();
  callsta.close();
  conn.close();
 } catch (Exception e) {
  e.printStackTrace();
 }
}

 1. {call getcur(?)}:调用存储过程,?代码参数

 2. callsta.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);这个是设置返回类型,之前使用

        java.sql.Types.REF一直报错“java.sql.SQLException: ORA-03115: 不支持的网络数据类型或表示法”,

        查询了一下,使用oracle.jdbc.OracleTypes.CURSOR这个就没有问题了。

 3.网上查了下,说是可以使用oracle.jdbc.OracleCallableStatement来代替CallableStatement ,

    返回结果的时候使用rs = cs.getCursor(1);就可以得到,但是我的使用报类型错误,

    分析原因,应该是我使用了连接池c3p0,所以总是报错
分享到:
评论

相关推荐

    JDBC存储过程的调用

    JDBC存储过程的调用

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...

    jdbc--drivers.zip_ jdbc oracle_JDBC ORACLE_oracle

    标题中的"jdbc--drivers.zip_ jdbc oracle_JDBC ORACLE_oracle"表明这是一个关于JDBC驱动程序的压缩包,特别关注的是Oracle数据库的JDBC驱动。JDBC,全称Java Database Connectivity,是Java语言中用于与各种数据库...

    jdbc连接oracle,执行存储过程,带数据库存储过程

    本篇将详细介绍如何使用JDBC连接Oracle数据库并执行存储过程。 首先,我们需要理解JDBC的基本概念。JDBC是Java平台的标准API,它允许Java程序与各种数据库进行通信。通过JDBC,我们可以创建数据库连接、发送SQL语句...

    JDBC oracle 驱动程序包

    在"JDBC oracle 驱动程序包"中,`oracle11g驱动jar包`是针对Oracle 11g版本的JDBC驱动程序的Java类库文件。这个`.jar`文件包含了所有必要的类和方法,使得Java应用程序能够连接到Oracle 11g数据库,执行SQL查询,...

    JDBC和ODBC连接Oracle数据库/连接txt/Access/Excel入门简洁源码及存储过程调用

    本资源主要涵盖了使用JDBC(Java Database Connectivity)和ODBC(Open Database Connectivity)连接Oracle数据库的方法,同时也涉及到如何处理文本、Access和Excel文件,以及如何调用存储过程。接下来,我们将详细...

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

    本篇将深入探讨如何使用JDBC来调用Oracle的存储过程并处理返回值。 首先,了解存储过程的概念。存储过程是预编译的SQL语句集合,它们存储在数据库服务器中,可以接受参数,执行一系列操作,并可能返回结果。在...

    Oracle12C JDBC 驱动

    Oracle12C JDBC驱动还支持高级特性,如分布式事务处理、批量操作、预编译的SQL语句、游标、存储过程调用、连接池管理等。此外,通过`oracle.jdbc.pool.OracleDataSource` 类可以实现连接池功能,如使用Oracle的...

    struts2+oracle过程调用

    这些数据库对象都是在Oracle中管理和调用过程的重要组成部分。 综上所述,"struts2+oracle过程调用"涉及了Struts2框架中Action类与数据库的交互,Oracle数据库的管理,以及PL/SQL过程的使用。这个主题涵盖了Web开发...

    jdbcoracle(文件上传)

    在IT行业中,数据库管理和文件上传是两个至关重要的领域。这里我们关注的是`jdbc...以上就是关于`jdbcoracle(文件上传)`的知识点,涵盖了JDBC与Oracle数据库的交互,以及如何在Java环境中处理文件上传至数据库的过程。

    jdbc oracle dirver.rar

    Oracle JDBC驱动还支持高级特性,如批量操作、事务控制、游标处理、存储过程调用、分布式事务等,使得Java开发者能够充分利用Oracle数据库的功能。 总的来说,"jdbc oracle dirver.rar"压缩包提供了连接Oracle...

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

    在调用过程中,可能会遇到SQL异常或其他运行时异常,需要使用try-catch-finally结构进行异常处理。捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,...

    oracle12 jdbc驱动包

    此外,Oracle 12c JDBC驱动还支持高级特性,如分布式事务处理、JNDI查找、连接池管理、数据源支持、以及SQL的高级功能,如批量处理、存储过程调用、游标处理等。对于大型企业级应用,这些特性尤其重要,它们能确保...

    JDBC调用oracle存储过程.docx

    在本场景中,我们讨论的是如何使用JDBC调用Oracle数据库中的存储过程。存储过程是一组预先编译的SQL语句,可以提高数据库操作的效率和安全性。 首先,我们需要了解如何创建Oracle存储过程。在示例中,我们看到了三...

    oracle jdbc jar包

    Oracle JDBC还支持高级特性,如批量更新、预编译的`PreparedStatement`、存储过程调用、游标处理、事务控制等。对于大型企业级应用,理解并熟练使用这些特性是至关重要的。 在开发过程中,注意管理和优化JDBC连接,...

    springboot整合mybatis调用oracle存储过程

    本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...

    JDBC连接oracle数据库测试

    总的来说,JDBC连接Oracle数据库的测试是一个涉及多方面知识的过程,包括JDBC API的使用、数据库连接的管理、定时任务的实现以及日志记录等。这个测试对于评估数据库的稳定性和性能至关重要,有助于优化应用程序与...

    oracle 调用webservice

    本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...

    oracle 11g jdbc jar包

    Oracle 11g JDBC Jar包是Oracle数据库与Java应用程序之间通信的重要桥梁,它包含了Oracle数据库JDBC驱动程序,使得开发者可以使用Java编程语言来访问和操作Oracle数据库。JDBC(Java Database Connectivity)是Java...

    JDBC和Oracle的参数设置和调用技术.pdf

    《JDBC和Oracle的参数设置和调用技术》这篇文献主要探讨了如何通过Java的JDBC接口调用Oracle数据库中的存储过程,以及不同类型的参数设置和处理方法。Oracle的存储过程是预编译的代码块,能提升系统性能,减少网络...

Global site tag (gtag.js) - Google Analytics