论坛首页 综合技术论坛

用Java编写Oracle存储过程

浏览 17134 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2006-10-24  
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
   发表时间:2006-10-24  
java stored procedure 用的好像不多。不知道现在是否还支持。

我以前在的公司,使用java + oracle。都使用PL/SQL开发stored procedure。
我也问过DBA同样的问题。据说,Java Stored Procedure的性能和功能都不如 PL/SQL。
0 请登录后投票
   发表时间: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慢很多(如果慢的话)。
不过我还没有找到详细的对比资料。
0 请登录后投票
   发表时间:2006-10-25  
为什么没几个人回复呢?
难道言之无物?
居然还有人投了新手贴。
0 请登录后投票
   发表时间:2006-10-26  
用文档能查到吧,而且查起来不是特别麻烦,所以有人投。个人倾向于写sql的存储过程,而且可以让DBA来写……

PS:不是我投的……
0 请登录后投票
   发表时间:2007-01-23  
我在db2下写过java存储过程,部署起来很麻烦,其开发效率远不如用纯sql,后来我都改成用sql pl 来写了
0 请登录后投票
   发表时间:2007-01-31  
9里边就支持了。使用java或者C编写存储过程,有时候是为了实现特定的算法才这么做的。因为就效率而言,
PL/SQL > C/C++ > Java
但是PL/SQL编写选定算法不如C或Java方便。
0 请登录后投票
   发表时间:2007-04-20  
楼主能比较一下用java写和用PL/SQL写的优缺点吗?

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

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

在java中用StringBuffer拼效率应该很高!
0 请登录后投票
   发表时间:2007-04-20  
我没用过java写过存储过程,但用PL/SQL写存储过程可是有了年头,公司以前的项目要实现复杂的报表我们基本都是利用存储过程来实现的,那时的主要工作量都集中怎么修改存储过程来实现客户的要求。其实那时根本没想过要java来实现存储过程虽然也知道java可以写,用PL/SQL写其实挺方便的。如果即使性能一样的我还会选择。
2 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics