PL/SQL呼叫JAVA CLASS

85579711發表於2014-06-10

PL/SQL呼叫JAVA CLASS

(2012-08-15 15:03:09)
標籤:

雜談

分類: JAVA

最近在研究公司用高資買來的一個產品,發現裡面用到PLSQL呼叫JAVA的實現。
這種用法,我記得在我05年剛工作時看到過,今天來寫下來一下吧
總的說來,這種方法,就是把JAVA方法通過PLSQL的FUNCTION或者PROCUDRE的方法暴露給SQL呼叫(
兩者的區別,大家自己查一下吧)

對於JAVA的方法一定要是STATIC的,引數可以有,可以沒有,但是PLSQL中的FUNCTION或者PROCUDRE
要和JAVA方法保持一致。

實現方法

1,建立JAVA CLASS
a)對於簡單的CLASS,我們可以直接在PLSQL裡定議,如下

create or replace and compile java source named "HelloWorld"
as
package com.test;

public class HelloWorld {
public static String sayHello(String name){
 System.out.println("hello::"+ name);
 
 return "hello::"+ name;
}
}

b)第二個方法,就是可以先建立和編譯好CLASS,如:
package com.test;

public class HelloWorld {
public static String sayHello(String name){
 System.out.println("hello::"+ name);
 
 return "hello==="+ name;
}
}

然後用oracle提供的loadjava utility把CLASS上傳到ORACLE SERVER上(第三方JAR包也可以這樣傳上去)
可以用dropjava utility把CLASS從SERVER刪除

loadjava -user username/pass@ORACLE_SERVER {dir}\HelloWorld.class

2)建立對就的SQL FUNCTION如:
create or replace function HelloWorld(p_name in varchar2)
return varchar2
as
language java name 'com.test.HelloWorld.sayHello(java.lang.String) return java.lang.String';

執行成功之後,你可以能過TOAD,發現上傳的CLASS在JAVA這個目錄裡

除了用上面的SQL建立FUNCTION外,我們也可以通過TOAD的快捷方式,如


3)通過select HelloWorld('java') from dual;看看是不是成功了,呵呵

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29063131/viewspace-1179438/,如需轉載,請註明出處,否則將追究法律責任。

相關文章