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存储过程的调用
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
标题中的"jdbc--drivers.zip_ jdbc oracle_JDBC ORACLE_oracle"表明这是一个关于JDBC驱动程序的压缩包,特别关注的是Oracle数据库的JDBC驱动。JDBC,全称Java Database Connectivity,是Java语言中用于与各种数据库...
本篇将详细介绍如何使用JDBC连接Oracle数据库并执行存储过程。 首先,我们需要理解JDBC的基本概念。JDBC是Java平台的标准API,它允许Java程序与各种数据库进行通信。通过JDBC,我们可以创建数据库连接、发送SQL语句...
在"JDBC oracle 驱动程序包"中,`oracle11g驱动jar包`是针对Oracle 11g版本的JDBC驱动程序的Java类库文件。这个`.jar`文件包含了所有必要的类和方法,使得Java应用程序能够连接到Oracle 11g数据库,执行SQL查询,...
本资源主要涵盖了使用JDBC(Java Database Connectivity)和ODBC(Open Database Connectivity)连接Oracle数据库的方法,同时也涉及到如何处理文本、Access和Excel文件,以及如何调用存储过程。接下来,我们将详细...
本篇将深入探讨如何使用JDBC来调用Oracle的存储过程并处理返回值。 首先,了解存储过程的概念。存储过程是预编译的SQL语句集合,它们存储在数据库服务器中,可以接受参数,执行一系列操作,并可能返回结果。在...
Oracle12C JDBC驱动还支持高级特性,如分布式事务处理、批量操作、预编译的SQL语句、游标、存储过程调用、连接池管理等。此外,通过`oracle.jdbc.pool.OracleDataSource` 类可以实现连接池功能,如使用Oracle的...
这些数据库对象都是在Oracle中管理和调用过程的重要组成部分。 综上所述,"struts2+oracle过程调用"涉及了Struts2框架中Action类与数据库的交互,Oracle数据库的管理,以及PL/SQL过程的使用。这个主题涵盖了Web开发...
在IT行业中,数据库管理和文件上传是两个至关重要的领域。这里我们关注的是`jdbc...以上就是关于`jdbcoracle(文件上传)`的知识点,涵盖了JDBC与Oracle数据库的交互,以及如何在Java环境中处理文件上传至数据库的过程。
Oracle JDBC驱动还支持高级特性,如批量操作、事务控制、游标处理、存储过程调用、分布式事务等,使得Java开发者能够充分利用Oracle数据库的功能。 总的来说,"jdbc oracle dirver.rar"压缩包提供了连接Oracle...
此外,Oracle 12c JDBC驱动还支持高级特性,如分布式事务处理、JNDI查找、连接池管理、数据源支持、以及SQL的高级功能,如批量处理、存储过程调用、游标处理等。对于大型企业级应用,这些特性尤其重要,它们能确保...
在调用过程中,可能会遇到SQL异常或其他运行时异常,需要使用try-catch-finally结构进行异常处理。捕获`SQLException`,根据错误码或异常信息进行相应的处理。 五、批处理调用 如果需要调用多个存储过程或函数,...
在本场景中,我们讨论的是如何使用JDBC调用Oracle数据库中的存储过程。存储过程是一组预先编译的SQL语句,可以提高数据库操作的效率和安全性。 首先,我们需要了解如何创建Oracle存储过程。在示例中,我们看到了三...
Oracle JDBC还支持高级特性,如批量更新、预编译的`PreparedStatement`、存储过程调用、游标处理、事务控制等。对于大型企业级应用,理解并熟练使用这些特性是至关重要的。 在开发过程中,注意管理和优化JDBC连接,...
本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...
本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...
总的来说,JDBC连接Oracle数据库的测试是一个涉及多方面知识的过程,包括JDBC API的使用、数据库连接的管理、定时任务的实现以及日志记录等。这个测试对于评估数据库的稳定性和性能至关重要,有助于优化应用程序与...
Oracle 11g JDBC Jar包是Oracle数据库与Java应用程序之间通信的重要桥梁,它包含了Oracle数据库JDBC驱动程序,使得开发者可以使用Java编程语言来访问和操作Oracle数据库。JDBC(Java Database Connectivity)是Java...
《JDBC和Oracle的参数设置和调用技术》这篇文献主要探讨了如何通过Java的JDBC接口调用Oracle数据库中的存储过程,以及不同类型的参数设置和处理方法。Oracle的存储过程是预编译的代码块,能提升系统性能,减少网络...