java - 从 Oracle 触发器调用 Java 程序
问题描述
我会在这里尽量简洁。实际上,我有一段用 Java 编写的代码,用于向我们的客户发送短信。
我们使用 Oracle 10g 作为我们的数据库。我想要的只是
“每当在特定表中插入一行时,我想创建一个触发器,它可以调用我的 Java 程序并向其传递几个参数,例如客户编号、发票 ID、发票金额等。”
我试图找到某些教程,但大多数情况下我正在获取有关创建 java 存储过程以在数据库中进行某些更改的教程。我不想要那个。
我想要的只是有一种方法可以触发调用我的java程序并将一些参数传递给我的java程序的触发器。可能吗 ?
谁能给我提供一个代码来编写一个只用一些参数调用我的程序(比如说Test.java)的oracle触发器?我会很感激的
非常感谢
解决方案
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{
推荐阅读
- c++ - 如何减少诅咒的闪烁/滞后?
- javascript - 将 ISO 8601 持续时间解析为更漂亮
- java - 确认所有流的方法
已成功发布到kafka - javascript - ReactJs:负责处理数据以呈现视图的父组件或子组件?
- angular - Angular 语言服务扩展在带有 Angular 12 的 Visual Studio 2019 中不起作用
- node.js - Deleting Objectid referenced to another collection in schema
- ios - How to parse particular JSON file in SwiftUI
- haskell - Data.List.NonEmpty.toNonEmpty
- json - JSON parsing from a link
- r - How to read raw from an arbitrary file without knowing the size?