Oracle自带一个JVM内置对Java的支持任何Java能做的事情你都可以放到Oracle里面来做你甚至可以在里面操作db这让Oracle具备了极其巨大的扩展能力只要你愿意完全可以开发一个trigger让它在适当的时候给管理员的msn发送一条即时消息
由于ps/SQL是过程化的语言它基本上不具备多态的概念供Oracle使用的Java方法必须申明为static所以在Oracle中你无法使用Java的动态特性比如接口反射等不过这并不妨碍你用Java做爱做的事
我们以一个简单的hello world为例我想任何一个有经验的Java程序员都能够通过这个例子派生出其他希奇古怪的应用有好的创意记得要与我共享我的msn是
首先是创建一个Java类启动SQL plus执行如下命令
create or replace and compile java source named hello_sp as
package orgbromonoracle;
public class Hello
{
public static String say(String name)
{
return 你好+name;
}
}
Java程序已创建
然后在Oracle中把这个类导入成为一个函数执行命令
create or replace function hello_sp(name varchar) return varchar
as language java name
orgbromonoracleHellosay(javalangString) return javalangString;
函数已创建
现在可以调用该函数执行
select hello(bromon) from dual;
返回结果你好bromon
有一个需要注意的问题是假如我们的java方法是没有参数的比如
public static String say()
{
return 你好;
}
那么在创建函数的时候函数名不应该有扩号hello_sp否则会报告函数有编译错误
如果你的Java类是在IDE里面编写的那么只需要在oracle中加载编译过的class文件即可方法是
启动enterprise manage console在方案下找到源类型右击Java类选择加载Java选择对应的class文件即可