<!----><!---->
<!---->
1
介绍
Oracle
里可以使用多种语言来编写存储过程,比如
Pro*C/C++,PL/SQL,COBOL,
在
Oracle8i
开始支持用
Java
编写存储过程。
如果非要写存储过程的话,做为以
Java
谋生的我,首选用
Java
编写,用
PL/SQL
需要记忆很多的语法
(Pascal
类的语法
)
和函数,远不如使用
Java/JDBC
这么轻车熟路。而且,
DB2
等数据库都支持
Java
存储过程,所以不比为每一种数据学习一种编写存储过程的方法了。
Java
存储过程与一般的
JDBC
程序有所不同的是:
1.
有安全限制,毕竟是在
oracle
内部运行的,不允许访问操作系统的资源,如文件。
2.
获取数据库联接方式,
connection = new OracleDriver().defaultConnection();
3.System.out,System.err,System.in
等输入输出有所不同。可以利用某些命令重定向。
2
例子
下面用Java
存储过程写一个例子。
在plsqldeveloper
里,java source
里增加一个TestJava
类,
Java
代码
create or replace and compile
java source named TestJava as
public
class
TestJava {
public
static
void
test(String xm) {
System.
out
.println(
"
姓名
:"
+xm);
}
public
static
String message(String xm) {
return
"Hello,
"
+ xm;
}
}
create or replace and compile
java source named TestJava1 as
public class TestJava1
{
public static void test()
{
System.out.println("Hello");
}
}
执行它,以保存并编译。
1.TestPro
create
or
replace
procedure
TestPro(xm
in
varchar2
)
as
language
java
name
'TestJava.test(java.lang.String)'
;
create or replace procedure
testJava1 as language java name 'TestJava1.test()';
2.
在
command window
里输入
SET SERVEROUTPUT ON;
CALL dbms_java.set_output(2000);
以使
System.out
重定向到当前窗口
;
在
command
window
里输入,
exec testpro(‘111’);
即可看到结果:
姓名
:111
PL/SQL procedure successfully completed
2.3 Function
1.TestFuc
create
or
replace
function
TestFuc(xm
in
varchar2
)
return
VARCHAR2
as
language
java
name
'TestJava.message(java.lang.String) return
java.lang.String'
;
2.
调用
Select testfuc(‘
娃哈哈
’) from dual;
显示结果
:
Hello,
娃哈哈
--
授权
,
用户必须大写
exec dbms_java.grant_permission('TEST','SYS:java.util.PropertyPermission',
'*', 'read,write' );
exec dbms_java.grant_permission('TEST','SYS:java.net.SocketPermission','*','connect,resolve');
/**
*
数据库连接
(
默认
)
*
@return
Connection
*
@throws
SQLException
*/
public
static
Connection getConnection()
throws
SQLException {
Connection con =
null
;
con =
new
OracleDriver().defaultConnection();
return
con;
}
/**
*
数据库连接
*
@param
driverClassName
*
@param
url
*
@param
user
*
@param
password
*
@return
Connection
*
@throws
ClassNotFoundException
*
@throws
SQLException
*/
public
static
Connection getConnection(String driverClassName, String
url, String user, String password)
throws
ClassNotFoundException, SQLException {
Connection con =
null
;
Class.forName
(driverClassName);
Properties info = System.getProperties
();
info.put(
"user"
, user);
info.put(
"password"
, password);
con = DriverManager
.getConnection
(url,
info);
return
con;
}
4
参考资料
Oracle® Database Java Developer's
Guide
http://download-west.oracle.com/docs/cd/B19306_01/java.102/b14187/toc.htm
Sample:
http://www.oracle.com/technology/sample_code/tech/java/jsp/oracle9ijsp.html
分享到:
相关推荐
在介绍使用Java编写Oracle存储过程之前,我们首先需要了解存储过程的基本概念以及使用它们的好处。存储过程是存储在数据库中的一段预编译和优化过的代码,可以包含复杂的业务逻辑。它们在第一次执行后被编译并存储在...
Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...
下面将详细探讨如何用Java编写Oracle数据库存储过程,以及相关的知识点。 首先,我们需要了解Oracle的Java存根(Java Stubs)和Java源代码存储。Java存根是Oracle数据库中的一个对象,它代表了Java方法,而Java源...
在Java编程中,Oracle存储过程的调用与标准输入(System.in)的交互可能会遇到一些问题,特别是当尝试使用System.in进行阻塞IO操作时。这个问题通常涉及到Java的多线程概念、I/O流的处理以及Oracle存储过程的执行...
我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用这些存储过程。 Oracle 存储过程 首先,我们编写了两个 Oracle 存储过程:`P_EMP_SELECT` 和 `P_EMP_ADD`。 `P_EMP_SELECT` ...
`ORACLE存储过程.txt`可能包含了存储过程的创建和使用示例,可以帮助读者理解存储过程的编写和功能。至于`dbman`,可能是数据库管理工具,用于创建、修改或查看数据库对象,包括存储过程。 学习这部分内容对于Java...
在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将深入探讨如何使用Java与...记住,实践是最好的老师,尝试编写一个简单的Java程序来调用Oracle存储过程,加深理解。
本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...
存储过程可以由多种语言编写,例如 PL/SQL、Java 等。存储过程可以封装复杂的业务逻辑,提高数据库的安全性和性能。 二、CallabledStatement 介绍 CallabledStatement 是 Java 中的一种接口,用于调用存储过程。...
本项目中,我们将探讨如何利用Java来编写Oracle存储过程,以实现数据库的备份功能。 首先,Oracle存储过程是一种预编译的SQL和PL/SQL代码集合,可以执行特定任务,如数据处理、业务逻辑等。通过Java调用存储过程,...
本文将详细介绍如何在Java中实现对Oracle存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...
在MyEclipse中,你可以创建一个Java项目,编写以上代码,并运行它来测试对Oracle存储过程的调用。记得根据实际的数据库配置和存储过程名称进行调整。 通过这种方式,Java开发者可以有效地利用Oracle数据库的强大...
总的来说,Java调用Oracle存储过程主要依赖于`CallableStatement`接口,它允许我们定义输入参数、输出参数以及输入/输出参数,并且可以处理存储过程的返回值。在处理返回值时,需要根据存储过程的返回类型选择合适的...
本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...
因此,掌握Oracle存储过程的使用对于Java开发者来说是非常重要的。 在提供的“oracle存储过程教程@www.java1234.com.pdf”文件中,你可能会深入学习到这些概念和实践技巧,包括但不限于存储过程的创建、调用、参数...
这篇博客可能详细讨论了如何在Java中与Oracle存储过程交互,特别是涉及到了游标的使用。 首先,让我们理解存储过程的概念。存储过程是一组预先编译的SQL语句,可以接受参数,执行复杂操作,然后返回结果。在Oracle...
文档“在Oracle8i中使用java编写存储过程.doc”可能会详细讲解这些步骤,并提供实际示例代码。它可能还会讨论一些高级主题,如异常处理、参数传递、结果集处理以及如何优化Java存储过程的性能。 此外,使用Java编写...