1.使用OracleCallableStatement对象
开发的代码如下:
public ArrayList<MeterChangehdAll> creatitems(HashMap paraMap)
throws DaoException {
Connection conn = DBConn.getConnection1();
ArrayList arr = new ArrayList();
String result = "";
try {
OracleCallableStatement ps = (OracleCallableStatement) conn
.prepareCall("call pg_metertrans.SearchCycChange(?,?,?,?,?,?,?,?,?)");
String temp="cicode";//用户号
if(("mcdmbfid,mcdmrorder").equals(paraMap.get("ordername"))){//抄表号
temp="mibfid,mirorder";
}
else if(("mcdmadr").equals(paraMap.get("ordername"))){//装表地址
temp="miadr";
}
ps.setString(1, (String) paraMap.get("p_smfid"));
ps.setString(2, (String) paraMap.get("p_sdate"));
ps.setString(3, (String) paraMap.get("p_edate"));
ps.setString(4, (String) paraMap.get("p_scaliber"));
ps.setString(5, (String) paraMap.get("p_ecalibe"));
ps.setString(6, (String) paraMap.get("p_sbfid"));
ps.setString(7, (String) paraMap.get("p_ebfid"));
ps.setString(8, temp);
ps.registerOutParameter(9, OracleTypes.CURSOR);
ps.execute();
System.out.println("执行完存储过程,开始转存"+new Date());
ResultSet rs = (ResultSet) ps.getObject(9);
while (rs.next()) {
MeterChangehdAll ndto = new MeterChangehdAll();
ndto.setMcdccode(rs.getString("mcdccode"));
ndto.setMcdmlabelno(rs.getString("mcdmlabelno"));
ndto.setMcdcname(rs.getString("mcdcname"));
ndto.setMcdcadr(rs.getString("mcdcadr"));
ndto.setMcdmadr(rs.getString("mcdmadr"));
ndto.setMcdmrorder(rs.getString("mcdmrorder"));
ndto.setMcdcid(rs.getString("mcdcid"));
ndto.setMcdmid(rs.getString("mcdmid"));
ndto.setMcdinsdate(rs.getDate("mcdinsdate"));
ndto.setMcdcyc(rs.getString("mcdcyc"));
ndto.setMchsource("1");
ndto.setMchlb("C");
arr.add(ndto);
}
System.out.println("数据循环转存结束"+new Date()+" 数据长度:"+arr.size());
ps.close();
} catch (Exception e) {
result = e.getMessage();
e.printStackTrace();
}
finally {
try {
if (conn != null) {
DBConn.close(conn);
}
return arr;
} catch (Exception e) {
System.out.println("发生不能关闭JDBC链接的异常,请检查!");
e.printStackTrace();
}
}
return arr;
}
2.还可以直接使用PreparedStatement对象来调用存储过程
开发代码如下:
public String ApproveBill(HashMap paraMap) throws DaoException {
Connection conn = DBConn.getConnection1();
String result = "";
try {
PreparedStatement ps = conn.prepareStatement("BEGIN pg_metertrans.ApproveBill(?,?,?,?,?); END;");
ps.setString(1, (String) paraMap.get("p_billid"));
ps.setString(2, (String) paraMap.get("p_billno"));
ps.setString(3, (String) paraMap.get("p_djlb"));
ps.setString(4, (String) paraMap.get("p_person"));
ps.setInt(5, Integer.valueOf(paraMap.get("p_wfid").toString()));
ps.execute();
ps.close();
} catch (Exception e) {
result = e.getMessage();
e.printStackTrace();
} finally {
try {
if (conn != null) {
DBConn.close(conn);
}
return result;
} catch (Exception e) {
System.out.println("发生不能关闭JDBC链接的异常,请检查!");
e.printStackTrace();
}
}
return result;
}
以上代码为正式开发代码,可以做参考使用.
分享到:
相关推荐
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...
总之,Java调用Oracle存储过程,尤其是处理游标,需要理解JDBC的使用、Oracle特定的类型以及存储过程的参数传递方式。通过合理的编程实践,我们可以高效地在Java应用程序中集成Oracle数据库的复杂操作。
总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...
以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...
java调用oracle存储过程.wps java调用oracle存储过程.wps java调用oracle存储过程.wps
总之,Java调用Oracle存储过程涉及的主要知识点包括JDBC API、Oracle JDBC驱动、`CallableStatement`对象、参数绑定、结果集处理以及资源管理。通过学习和实践这些内容,开发者可以有效地在Java应用中集成Oracle...
在Java中调用Oracle存储过程,我们需要使用JDBC(Java Database Connectivity),这是Java标准库提供的一组接口和类,用于与各种数据库进行通信。首先,我们需要添加Oracle JDBC驱动到项目中,例如ojdbc.jar。 1. *...
### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...
本文将详细讲解如何使用Java调用Oracle存储过程,并提供示例代码。 首先,我们需要了解Java中用于与数据库交互的核心类,包括`java.sql.Connection`、`java.sql.CallableStatement`和`java.sql.Types`。`Connection...