一 概述
本篇介绍用java访问存储过程和访问存储函数
二 开发环境搭建
1、安装oracle时候,会带有jdbc的驱动程序,存放路径如下:
D:\app\lenovo\product\11.2.0\dbhome_1\jdbc\lib
2、拷贝ojdbc6.jar到eclipse的工程目录的lib目录下。
F:\java\workspace\TestOracle\lib
3、在eclipse工程中选中ojdbc6.jar,右键Build Path,将该jar包加到开发环境中。
4、环境搭建后截图如下:
三 创建JDBC工具类
代码如下:
package demo.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
publicclassJDBCUtils{
privatestaticString driver ="oracle.jdbc.OracleDriver";
privatestaticString url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
privatestaticString user ="scott";
privatestaticString password ="tiger";
//注册数据库的驱动
static
{
try{
Class.forName(driver);
//DriverManager.registerDriver(driver);
}catch(ClassNotFoundException e){
thrownewExceptionInInitializerError(e);
}
}
//获得数据库连接
publicstaticConnection getConnection(){
try{
returnDriverManager.getConnection(url, user, password);
}catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
returnnull;
}
//释放数据库的资源
publicstaticvoid release(Connection conn,Statement st,ResultSet rs){
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rs =null;
}
}
if(st!=null){
try{
st.close();
}catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
st=null;
}
}
if(conn !=null){
try{
conn.close();
}catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
conn =null;
}
}
}
}
四 在应用程序中如何访问存储过程
1、构建测试类:TestProcedure
package demo.oracle;
//import static org.junit.Assert.*;
import java.sql.CallableStatement;
import java.sql.Connection;
import oracle.jdbc.OracleTypes;
import org.junit.Test;
import demo.utils.JDBCUtils;
publicclassTestProcedure{
/*
create or replace procedure queryempinformation(eno in number,
pename out varchar2,
psal out number,
pjob out varchar2)
* */
@Test
publicvoid testProdedure(){
String sql ="{call queryempinformation(?,?,?,?)}";
Connection conn =null;
CallableStatement call=null;
try{
//得到一个连接
conn =JDBCUtils.getConnection();
call = conn.prepareCall(sql);
//对于输入参数,赋值
call.setInt(1,7839);
//对于输出参数,申明
call.registerOutParameter(2,OracleTypes.VARCHAR);
call.registerOutParameter(3,OracleTypes.NUMBER);
call.registerOutParameter(4,OracleTypes.VARCHAR);
//执行调用
call.execute();
//取出结果
String name = call.getString(2);
double sal =call.getDouble(3);
String job = call.getString(4);
System.out.println(name+"\t"+sal+"\t"+job);
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(conn, call,null);
}
}
}
2、测试结果:
KING 10100.0 PRESIDENT
五 在应用程序中如何访问存储函数
1、构建测试类 TestFunction
package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import oracle.jdbc.OracleTypes;
import org.junit.Test;
import demo.utils.JDBCUtils;
publicclassTestFunction{
/*
create or replace function queryempincoming(eno in number)
return number
* */
@Test
publicvoid testFunction(){
String sql="{call queryempincoming(?)}";
Connection conn =null;
CallableStatement call =null;
try{
//得到数据库连接
conn =JDBCUtils.getConnection();
call = conn.prepareCall(sql);
//对于输出函数,申明
call.registerOutParameter(1,OracleTypes.NUMBER);
//对于输入参数,赋值
call.setInt(2,7839);
//执行调用
call.execute();
//取出年收入结构
double income = call.getDouble(1);
System.out.println("该员工的年收入是:"+income);
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(conn, call,null);
}
}
}
2、测试结果
KING 10100.0 PRESIDENT
相关推荐
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和数据库文件。 首先,让我们了解什么是存储过程和函数。存储过程是预编译的SQL语句集合,可以接受参数、...
掌握如何在VFP中调用Oracle存储过程并实现数据自动转换,对于数据密集型企业的数据处理工作具有重要的实际意义。在企业生产环境当中,这样的数据库接口程序可以大大降低数据转换和处理的复杂度,提高工作效率。
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
通过上述步骤,我们已经了解了如何在Java应用程序中调用Oracle数据库中的存储过程和函数。这种方法不仅可以提高代码的执行效率,还能确保数据的安全性和一致性。希望本文能帮助您解决在实际开发过程中遇到的相关问题...
Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中,需要创建两个Type类型:`myScalarType`和`myTableType...
4. **编写事件处理程序**:双击`Button1`,在`Button1Click`事件处理程序中编写代码以调用Oracle存储过程。 #### Delphi中调用Oracle存储过程 以下是完整的Delphi代码示例,用于调用上述创建的Oracle存储过程: `...
本话题将详细探讨如何在Oracle存储过程中调用外部的批处理脚本,如Windows系统的BAT文件,以实现数据库操作与系统命令的集成。 首先,`Oracle存储过程`是一种预编译的SQL和PL/SQL代码集合,可以被多次调用以执行...
在实际开发中,C#与ORACLE数据库的集成是一个非常重要的 topic,本文将详细介绍如何在C#中调用ORACLE的PACKAGE里的方法和存储过程。 首先,我们需要在ORACLE数据库中建立一个PACKAGE,包括SPEC和BODY两部分。SPEC是...
在开发Oracle应用程序时,经常需要使用到存储过程和函数。这两种类型的数据库对象各有优势,可以满足不同的业务需求。有时候,为了更好地组织代码和提高复用性,我们可能会考虑在函数内部调用一个存储过程。这种做法...
标题中的“pb中执行oracle存储过程脚本”指的是在PowerBuilder(简称PB)环境中调用Oracle数据库的存储过程。PowerBuilder是一种可视化的开发工具,常用于构建数据驱动的应用程序。Oracle存储过程则是在Oracle数据库...
在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...
以下是一个基本的步骤来调用Oracle存储过程: 1. **建立数据库连接**: 使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码来创建一个`Connection`对象。 ```java Connection conn = ...
调用Oracle存储过程是数据库管理中的常见任务,尤其对于需要执行大量数据处理或事务操作的场景。下面我们将详细探讨如何在Oracle中调用存储过程以及其相关知识点。 1. **创建存储过程**: 在Oracle中,你可以使用`...
本文将详细介绍如何在不同的环境中调用Oracle的函数和存储过程。 首先,了解函数与存储过程的区别。函数是返回一个特定值的程序单元,而存储过程则可以执行一系列操作,但不一定返回值。在Oracle中,两者都可以接受...
通过学习和实践这些Oracle存储过程和函数的实例,你可以更好地理解和掌握如何在实际项目中应用它们。Oracle 存储过程详解.doc文档可能包含了更多详细的步骤和示例,建议详细阅读,以深化对这一主题的理解。
本文将详细讲解如何在C#中使用自定义列表(List)作为参数调用Oracle存储过程,以及实现这一功能的关键技术和注意事项。 首先,我们需要了解Oracle数据库中的PL/SQL类型,例如VARCAR2、NUMBER等,它们对应于C#中的...