从Oracle触发器调用Java程序

时间:2018-11-25 14:04:45

标签: java oracle stored-procedures triggers

我会在这里尽量简洁。实际上,我有一段用Java编写的代码,用于向我们的客户发送短信。

我们正在使用Oracle 10g作为我们的数据库。我在这里想要的就是

“每当在特定表中插入一行时,我想创建一个触发器,该触发器可以调用我的Java程序并向其传递几个参数,例如客户编号,发票ID,发票金额等。”

我试图找到某些教程,但是大多数情况下,我正在获取有关创建Java存储过程以对数据库进行某些更改的教程。我不要

我只想拥有一种方法,通过它可以触发一个调用我的Java程序的触发器,并将一些参数传递给我的Java程序。有可能吗?

任何人都可以给我提供一个代码来编写一个使用某些参数调用我的程序(比如说Test.java)的oracle触发器吗?我会真的很棒

非常感谢

1 个答案:

答案 0 :(得分:2)

请参见Calling Java Stored Procedure from Database Trigger

CREATE OR REPLACE PROCEDURE log_sal ( 
emp_id NUMBER,
 old_sal NUMBER,
 new_sal NUMBER
)
AS LANGUAGE JAVA
NAME 'DBTrigger.logSal(int, float, float)';

接下来,创建sal_audit表,如下所示:

CREATE TABLE sal_audit (
 empno NUMBER,
 oldsal NUMBER,
 newsal NUMBER
);
     

最后,创建数据库触发器,当薪金涨幅超过20%时将触发该触发器:

CREATE OR REPLACE TRIGGER sal_trig
AFTER UPDATE OF salary ON employees
FOR EACH ROW
WHEN (new.salary > 1.2 * old.salary)
CALL log_sal(:new.employee_id, :old.salary, :new.salary);

在此示例中,使用DBTrigger.logSal方法定义代码

public class DBTrigger{
   public static void logSal (int empID, float oldSal, float newSal)
                                                    throws SQLException{