首页  ·  知识 ·  编程语言
使用Java编写Oracle存储过程
网友   http://blog.csdn.net/cecoo/archive/2008/04/21/2311909.aspx  Java  编辑:德仔   图片来源:网络
通常我们都使用Ps/SQL为Oracle编写存储过程,从Oracle 8开始我们可以有另一种选择:Java。8.0开始,Oracle自带一个JVM,内置对Java的支持,任何Java
通常我们都使用Ps/SQL为Oracle编写存储过程,从Oracle 8开始我们可以有另一种选择:Java。8.0开始,Oracle自带一个JVM,内置对Java的支持,任何Java能做的事情你都可以放到Oracle里面来做,你甚至可以在里面操作db2。这让Oracle具备了极其巨大的扩展能力,只要你愿意,完全可以开发一个trigger,让它在适当的时候给管理员的msn发送一条即时消息。
    好消息说完了,现在是坏消息:由于ps/SQL是过程化的语言,它基本上不具备多态的概念,供Oracle使用的Java方法必须申明为static,所以在Oracle中你无法使用Java的动态特性,比如接口、反射等。不过这并不妨碍你用Java做爱做的事。
    我们以一个简单的hello world为例,我想任何一个有经验的Java程序员都能够通过这个例子,派生出其他希奇古怪的应用,有好的创意记得要与我共享,我的msn是
    首先是创建一个Java类,你可以用Jbuilder/Eclipse来编写,也可以直接在Oracle的控制台里面创建。前者不多说,看看后一种方式。
    启动SQL plus,执行如下命令:
create or replace and compile java source named "hello_sp" as
package org.bromon.oracle;
public class Hello
{
  public static String say(String name)
  {
    return "你好,"+name;
  }
    Java程序已创建。
    然后在Oracle中把这个类导入成为一个函数,执行命令:
create or replace function hello_sp(name varchar2) return varchar2
as language java name 
'org.bromon.oracle.Hello.say(java.lang.String) return java.lang.String';
 
    函数已创建
    现在可以调用该函数,执行:
    select hello('bromon') from dual;
    返回结果:你好,bromon
    有一个需要注意的问题是,假如我们的java方法是没有参数的,比如:
public static String say()
  {
    return "你好”;
  }
 
    那么在创建函数的时候,函数名不应该有扩号:hello_sp,否则会报告函数有编译错误。
    如果你的Java类是在IDE里面编写的,那么只需要在oracle中加载编译过的class文件即可,方法是:
    启动enterprise manage console,在“方案”下找到“源类型”,右击”Java类”,选择”加载Java“,选择对应的class文件即可。
 
本文作者:网友 来源: http://blog.csdn.net/cecoo/archive/2008/04/21/2311909.aspx
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读