`
LucasLee
  • 浏览: 205535 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用Java编写Oracle存储过程

阅读更多
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等输入输出有所不同。可以利用某些命令重定向。

下面用Java 存储过程写一个Hello World的例子。
1)在plsqldeveloper里,java source里增加一个TestJava1类,
create or replace and compile java source named TestJava1 as
public class TestJava1
{
  public static void test()
  {
   System.out.println("Hello");
  }
}

执行它,以保存并编译。

2)增加一个procedure,执行如下命令:
create or replace procedure testJava1 as language java name 'TestJava1.test()';


3)在command window里输入
SET SERVEROUTPUT ON;
CALL dbms_java.set_output(2000);

以使System.out重定向到当前窗口;
在command window里输入,exec testJava1();
即可看到结果:

Hello

PL/SQL procedure successfully completed


参考资料:
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
分享到:
评论
8 楼 goldpigbaby 2007-04-20  
我没用过java写过存储过程,但用PL/SQL写存储过程可是有了年头,公司以前的项目要实现复杂的报表我们基本都是利用存储过程来实现的,那时的主要工作量都集中怎么修改存储过程来实现客户的要求。其实那时根本没想过要java来实现存储过程虽然也知道java可以写,用PL/SQL写其实挺方便的。如果即使性能一样的我还会选择。
7 楼 lumi 2007-04-20  
楼主能比较一下用java写和用PL/SQL写的优缺点吗?

这样在实际应用的时候才明白使用的场合!

我觉得用PL/SQL的一个缺点是拼sql字符串很麻烦!

在java中用StringBuffer拼效率应该很高!
6 楼 iihero 2007-01-31  
9里边就支持了。使用java或者C编写存储过程,有时候是为了实现特定的算法才这么做的。因为就效率而言,
PL/SQL > C/C++ > Java
但是PL/SQL编写选定算法不如C或Java方便。
5 楼 IvanLi 2007-01-23  
我在db2下写过java存储过程,部署起来很麻烦,其开发效率远不如用纯sql,后来我都改成用sql pl 来写了
4 楼 刑天战士 2006-10-26  
用文档能查到吧,而且查起来不是特别麻烦,所以有人投。个人倾向于写sql的存储过程,而且可以让DBA来写……

PS:不是我投的……
3 楼 LucasLee 2006-10-25  
为什么没几个人回复呢?
难道言之无物?
居然还有人投了新手贴。
2 楼 LucasLee 2006-10-24  
buaawhl 写道
java stored procedure 用的好像不多。不知道现在是否还支持。

现在当然支持了,我就是Oracle10g上编写的这个例子.

buaawhl 写道

我以前在的公司,使用java + oracle。都使用PL/SQL开发stored procedure。
我也问过DBA同样的问题。据说,Java Stored Procedure的性能和功能都不如 PL/SQL。

Oracle的文档里说,会将Java的某些部分编译成本地代码,所以不应该会比PL/SQL慢很多(如果慢的话)。
不过我还没有找到详细的对比资料。
1 楼 buaawhl 2006-10-24  
java stored procedure 用的好像不多。不知道现在是否还支持。

我以前在的公司,使用java + oracle。都使用PL/SQL开发stored procedure。
我也问过DBA同样的问题。据说,Java Stored Procedure的性能和功能都不如 PL/SQL。

相关推荐

    使用Java编写Oracle存储过程.pdf

    在介绍使用Java编写Oracle存储过程之前,我们首先需要了解存储过程的基本概念以及使用它们的好处。存储过程是存储在数据库中的一段预编译和优化过的代码,可以包含复杂的业务逻辑。它们在第一次执行后被编译并存储在...

    java 与 oracle 存储过程

    Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...

    java调用oracle存储过程实现增删改查

    本文将详细介绍如何在Java中实现对Oracle存储过程的调用,以执行增删改查(CRUD)操作。 首先,确保你已安装了Oracle JDBC驱动(如ojdbc.jar),并将它添加到Java项目的类路径中。Oracle JDBC驱动提供了与Oracle...

    用Java编写Oracle数据库存储过程

    下面将详细探讨如何用Java编写Oracle数据库存储过程,以及相关的知识点。 首先,我们需要了解Oracle的Java存根(Java Stubs)和Java源代码存储。Java存根是Oracle数据库中的一个对象,它代表了Java方法,而Java源...

    java编写oracle的存储过程,为什么调用System.in阻塞IO时不起作用?还报错?

    在Java编程中,Oracle存储过程的调用与标准输入(System.in)的交互可能会遇到一些问题,特别是当尝试使用System.in进行阻塞IO操作时。这个问题通常涉及到Java的多线程概念、I/O流的处理以及Oracle存储过程的执行...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用这些存储过程。 Oracle 存储过程 首先,我们编写了两个 Oracle 存储过程:`P_EMP_SELECT` 和 `P_EMP_ADD`。 `P_EMP_SELECT` ...

    JAVA-ORACLE存储过程

    `ORACLE存储过程.txt`可能包含了存储过程的创建和使用示例,可以帮助读者理解存储过程的编写和功能。至于`dbman`,可能是数据库管理工具,用于创建、修改或查看数据库对象,包括存储过程。 学习这部分内容对于Java...

    java调用Oracle存储过程

    在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将深入探讨如何使用Java与...记住,实践是最好的老师,尝试编写一个简单的Java程序来调用Oracle存储过程,加深理解。

    java Oracle存储过程分页整理

    本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    存储过程可以由多种语言编写,例如 PL/SQL、Java 等。存储过程可以封装复杂的业务逻辑,提高数据库的安全性和性能。 二、CallabledStatement 介绍 CallabledStatement 是 Java 中的一种接口,用于调用存储过程。...

    项目里用到用java写oracle的存储过程,做个备份

    本项目中,我们将探讨如何利用Java来编写Oracle存储过程,以实现数据库的备份功能。 首先,Oracle存储过程是一种预编译的SQL和PL/SQL代码集合,可以执行特定任务,如数据处理、业务逻辑等。通过Java调用存储过程,...

    java调用oracle存储过程并得到结果集

    在MyEclipse中,你可以创建一个Java项目,编写以上代码,并运行它来测试对Oracle存储过程的调用。记得根据实际的数据库配置和存储过程名称进行调整。 通过这种方式,Java开发者可以有效地利用Oracle数据库的强大...

    oracle存储过程教程

    因此,掌握Oracle存储过程的使用对于Java开发者来说是非常重要的。 在提供的“oracle存储过程教程@www.java1234.com.pdf”文件中,你可能会深入学习到这些概念和实践技巧,包括但不限于存储过程的创建、调用、参数...

    Oracle 存储过程JAVA调用存储过程 游标使用

    这篇博客可能详细讨论了如何在Java中与Oracle存储过程交互,特别是涉及到了游标的使用。 首先,让我们理解存储过程的概念。存储过程是一组预先编译的SQL语句,可以接受参数,执行复杂操作,然后返回结果。在Oracle...

    在Oracle8i中使用java编写存储过程.rar

    文档“在Oracle8i中使用java编写存储过程.doc”可能会详细讲解这些步骤,并提供实际示例代码。它可能还会讨论一些高级主题,如异常处理、参数传递、结果集处理以及如何优化Java存储过程的性能。 此外,使用Java编写...

    java调用oracle存储过程

    调用Oracle存储过程时,我们使用`java.sql.CallableStatement`对象。它继承自PreparedStatement,专为调用数据库存储过程而设计。下面是如何设置和执行存储过程的代码: ```java CallableStatement cs = conn....

    用java调用oracle存储过程总结.docx

    ### 使用Java调用Oracle存储过程知识点总结 #### 一、无返回值的存储过程 **存储过程定义**: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID ...

Global site tag (gtag.js) - Google Analytics