如何从oracle触发器调用java类?

时间:2014-01-17 04:11:35

标签: java oracle triggers

我使用的是oracle 10g和jdk 1.6

我想从oracle Trigger调用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();

但我可以称之为。

所以请给我一个建议。

2 个答案:

答案 0 :(得分: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;
/

尝试使用上述步骤并分享结果。

答案 1 :(得分:0)

如oracle docs Calling Java from Database Triggers中所述,您必须将Java方法作为过程发布,并且必须在触发器中调用该过程。

请查看上述链接中的示例或other example here