Oracle 创建存储过程
--建立程序包
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE TEST_CURSOR IS REF CURSOR;
end TESTPACKAGE;
--创建返回列表的存储过程
CREATE OR REPLACE PROCEDURE TESTC
(
P_CURSOR out TESTPACKAGE.TEST_CURSOR
)
IS
BEGIN
OPEN P_CURSOR FOR
SELECT * FROM epv_dev.eprk_notice_test;
END TESTC;
package com.abc.demo;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import oracle.jdbc.OracleTypes;
public class Test {
public static String driver = "oracle.jdbc.driver.OracleDriver";
public static String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:epadbbak";
public static String userName = "sky";
public static String userPwd = "sky123";
public static Statement stmt = null;
public static ResultSet rs = null;
public static Connection conn = null;
public static CallableStatement proc = null;
/**
* 获得数据库连接,当连接为空时,创建连接
* @return
*/
public static Connection getConnection() {
if (conn == null) {
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, userName, userPwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
/**
* 执行查询单个参数的存储过程
* @return
*/
public static Object executeQuertProType() {
Object result = "";
conn = getConnection();
try {
proc = conn.prepareCall("{ call epa_dev.TESTB(?,?) }");
proc.setString(1, "sdlkj");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
result = proc.getString(2);
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll();
}
return result;
}
public static List<Hashtable<String,Object>> executeQuertProTable(){
List<Hashtable<String,Object>> result = null;
conn = getConnection();
try {
proc = conn.prepareCall("{ call epa_dev.testc(?) }");
proc.registerOutParameter(1, OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet) proc.getObject(1);
if (null == rs)
return result;
result = new ArrayList<Hashtable<String, Object>>();
while (rs.next()) {
Hashtable<String, Object> row = new Hashtable<String, Object>();
java.sql.ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (null == rs.getObject(i)) continue;
row.put(rsmd.getColumnName(i).toLowerCase(), rs.getObject(i));
}
result.add(row);
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
/**
* 关闭连接,释放资源..
*/
public static void closeAll() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex1) {
}
}
public static void main(String[] args) {
String result = (String) executeQuertProType();
List<Hashtable<String,Object>> templist = executeQuertProTable();
System.out.println("result:" + templist);
}
}
分享到:
相关推荐
执行Oracle存储过程主要涉及以下几个关键点: 1. 创建CallableStatement对象:使用Connection对象的`prepareCall()`方法创建CallableStatement实例,例如`CallableStatement cs = conn.prepareCall("{call procedure...
`说明.txt`文件提供了对这些存储过程的使用指南,可能包括如何通过SQL*Plus或应用程序接口(如Java的JDBC)调用它们,以及如何传递参数、处理返回结果等。在实际应用中,理解这些步骤至关重要,因为它们帮助确保正确...
总结来说,这个入门实例涵盖了使用Java通过JDBC调用Oracle存储过程进行CRUD操作的基本流程,以及利用DOM4J解析XML配置文件和`ThreadLocal`管理数据库连接的方法。这样的设计使得程序更加模块化,易于维护,同时也...
以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...
### Oracle存储过程实例详解 #### 一、存储过程概述 在Oracle数据库中,存储过程是一种预编译的SQL代码块,它可以包含复杂的逻辑处理,并且能够接收参数、执行操作、返回结果。存储过程的主要优点包括提高性能...
Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...
在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...
根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### Java调用存储过程实例:详解 #### 存储过程简介 存储过程是一种在数据库中编写的SQL...
Java可以通过JDBC调用Oracle存储过程,包括`CallableStatement`对象来执行过程并处理输入/输出参数。 9. **更新与权限保留** 使用`CREATE OR REPLACE PROCEDURE`语句更新存储过程时,原有执行权限不会丢失。 10....
当涉及到Java与Oracle存储过程的交互时,Java提供了JDBC(Java Database Connectivity)API,允许开发者通过编写Java代码来调用存储过程。使用CallableStatement对象,你可以定义输入参数,执行存储过程,并获取输出...
同时,Oracle JDBC驱动还支持Oracle特有的特性,如PL/SQL存储过程调用、LOB处理、分布式事务等。 总的来说,Java ORACLE JDBC驱动是Java开发者在处理Oracle数据库时必不可少的工具,它提供了高效、稳定和灵活的...
接下来,我们来看看如何在Java环境中调用这个Oracle存储过程。首先,你需要确保已经添加了Oracle JDBC驱动到你的项目类路径中。然后,可以使用`CallableStatement`接口来执行存储过程: ```java import java.sql.*;...
为了在Java中调用Oracle存储过程,我们需要使用JDBC(Java Database Connectivity)API。JDBC是Java平台的标准接口,用于与各种类型的数据库进行通信。以下是一步步教你如何实现的步骤: 1. **导入必要的库**: 在...
Oracle存储过程是由一系列PL/SQL语句组成的可重复使用的代码块,可以在数据库端执行。在Java中调用存储过程主要通过`CallableStatement`接口实现,它是`PreparedStatement`的子接口,专用于调用存储过程和函数。 ...
通过这些实例和说明,你应该能更好地理解Oracle存储过程的创建、游标的使用以及如何在Java应用中调用存储过程。在实际开发中,熟练掌握这些技巧将有助于提高数据库操作的效率和代码的可维护性。记住,实践是检验理论...
在Java编程中,与Oracle数据库交互是常见的任务之一,而调用Oracle存储过程可以实现复杂的业务逻辑。本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们...
选择合适的驱动程序、关闭自动提交、使用PreparedStatement对象、批量处理、调用存储过程以及优化连接池等策略,都是提高Java应用程序与Oracle数据库交互性能的有效手段。同时,定期对系统进行性能监控和调优,是...
在Java中执行Oracle存储过程是数据库操作中常见的一项任务,特别是在复杂的业务逻辑处理或数据处理流程中。Oracle存储过程是预编译的SQL语句集合,可以在数据库端执行,提高性能并减少网络流量。以下是对这个主题的...
本文将详细介绍如何在Java中实现对Oracle存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...
Java调用Oracle存储过程是数据库操作中常见的任务,特别是在需要执行复杂业务逻辑或者批量处理数据时。本篇文章将详细介绍如何通过Java与Oracle数据库交互,调用存储过程,并提供几个简单的实例帮助新手理解。 首先...