2014-01-17 13 views
2

我使用Oracle 10g和JDK 1.6如何從oracle觸發器調用java類?

我想打電話從Oracle觸發器的java類,我嘗試如下─

我的Java類是 -

public class DBTrigger 
{ 
    public static void logSal() 
    { 
    System.out.println("In java class"); 
    } 
} 

和我的Oracle觸發器是 -

CREATE OR REPLACE TRIGGER sal_trig 
AFTER UPDATE OF sal ON emp 
FOR EACH ROW 
WHEN (new.sal > 1.2 * old.sal) 
CALL logSal(); 

但我能夠稱它。

所以請給我一個建議。

+0

可能,你可以得到你的答案[here](http://dba.stackexchange.com/questions/19503/error-calling-stored-procedure-from-trigger-in-oracle-database-11g) – San

+0

但是java類的什麼位置。 – Alone

+0

小評論。當使用Oracle 10g時,如果您使用的是Java 1.5(在數據庫服務器上)。無論您使用桌面的JVM版本如何。 – ibre5041

回答

1

link說的是

1)創建Java類

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED My_JavaClass AS 
import java.io.*; 
public class DBTrigger 
{ 
    public static void logSal() 
    { 
    System.out.println("In java class"); 
    } 
} 
/

2)創建一個存儲過程(一基本上放置的人)叫你的java類

CREATE OR REPLACE PROCEDURE My_Javaclass_proc 
AS LANGUAGE JAVA NAME 'DBTrigger.logSal()'; 
/

3)創建觸發器並調用此過程

CREATE OR REPLACE TRIGGER sal_trig 
AFTER UPDATE OF sal ON emp 
FOR EACH ROW 
WHEN (new.sal > 1.2 * old.sal) 
begin 
    My_Javaclass_proc; 
end; 
/

嘗試使用上述步驟並共享結果。

+0

是的,但如果參數。 – Alone

+0

再次,我會說,按照鏈接,那裏的例子是使用參數:) – San

+0

我已經通過這個文件,但由於甲骨文的XE我不能在sql develoeper上創建一個Java類。 @San你能指導如果我有本地系統中的java類,那麼我怎樣才能調用這個類的方法 –