java调用oracle存储过程
b(?,?,?) }"); proc.setString(1, "1002"); // 设置输入参数 proc.registerOutParameter(2, OracleTypes.VARCHAR); // 注册输出参数 proc.execute(); String result = proc.getString(2); // 获取输出参数 System.out.println("返回的结果是:" + result); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != proc) { proc.close(); } if (null != conn) { conn.close(); } } catch (Exception ex) { } } } } 第三种情况:有返回值的存储过程(返回值为列表或游标) 创建存储过程: create or replace procedure test_c(param1 in varchar2, cursor out sys_refcursor) as begin open cursor for select * from test where tid=param1; end; Java 调用代码: package com.test; import java.sql.*; import java.io.*; public class TestProcC { public TestProcC() { } public static void main(String[] args) { Connection conn = null; CallableStatement proc = null; ResultSet rs = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test", "test", "test"); proc = conn.prepareCall("{ call test_c(?,?) }"); proc.setString(1, "1003"); proc.registerOutParameter(2, OracleTypesCURSOR); proc.execute(); rs = (ResultSet) proc.getObject(2); while (rs.next()) { String tid = rs.getString("tid"); String tname = rs.getString("tname"); System.out.println("tid: " + tid + ", tname: " + tname); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != rs) { rs.close(); } if (null != proc) { proc.close(); } if (null != conn) { conn.close(); } } catch (Exception ex) { } } } } 在以上代码中,我们展示了三种不同类型的Java调用Oracle存储过程的情况。第一种情况是无返回值的存储过程,仅用于执行某些操作,如插入数据到表中。在Java中,我们使用`CallableStatement`来准备和执行存储过程,设置输入参数并执行。 第二种情况涉及有返回值的存储过程,但返回值不是列表。这里,我们通过注册一个输出参数来接收存储过程的返回值。在Java中,我们需要使用`registerOutParameter`方法指定参数位置和类型,然后使用`getString`方法获取返回值。 第三种情况是存储过程返回一个列表(或游标),这通常用于返回多行数据。在这种情况下,我们同样使用`CallableStatement`,但需要注册一个输出参数为`OracleTypes.CURSOR`类型。执行存储过程后,我们可以通过`getObject`方法获取`ResultSet`对象,然后遍历结果集获取数据。 在所有这些示例中,我们首先加载Oracle的JDBC驱动,然后建立数据库连接。接着,我们创建`CallableStatement`实例,设置参数并执行存储过程。我们确保在完成操作后关闭所有资源,以避免资源泄露。 Java调用Oracle存储过程主要依赖于`CallableStatement`接口,它允许我们定义输入参数、输出参数以及输入/输出参数,并且可以处理存储过程的返回值。在处理返回值时,需要根据存储过程的返回类型选择合适的方法,如`getString`、`getInt`等,或者处理`ResultSet`对象。正确地调用和管理这些资源对于编写健壮、高效的Java应用程序至关重要。
































- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 论述GIS技术在交通工程中的应用.doc
- docopt.go-Go资源
- ATC单片机的SD卡的读写设计.doc
- G技术的浮动车交通信息采集系统研究.doc
- “计算机科学与技术”专业自评报告.doc
- AntFlow.net-C#资源
- 基于PLC的电梯控制系统方案设计书67842.doc
- 基于光电传感器的转速测量系统方案设计书单片机光电转速传感器转速测量数据处理.doc
- 齐鲁软件设计实施方案大赛题目.doc
- zibbs开源php轻论坛,Bootstrap论坛-PHP资源
- 三网络技术第章练习题.doc
- 基于智慧城市的物联网新技术的研究.docx
- Photoshop通道蒙版实例(21):使用通道锐化图像.doc
- 人工智能需要翻越三道坎.docx
- pdfh5-JavaScript资源
- 供应链金融与互联网金融.ppt


