我使用的是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();
但我可以称之为。
所以请给我一个建议。
答案 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