【问题标题】:How to call java class from oracle trigger?如何从 oracle 触发器调用 java 类?
【发布时间】:2014-02-06 07:13:15
【问题描述】:

我使用的是 oracle 10g 和 jdk 1.6

我想从 oracle 触发器中调用 java 类,因为我在下面尝试-

我的java类是-

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

我的预言机触发器是-

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

但我可以调用它。

所以请给我一个建议。

【问题讨论】:

  • 可能你可以得到答案here
  • 但是java类的位置。
  • 小评论。当使用 Oracle 10g 时,如果您使用的是 Java 1.5(在 DB serverver 上)。无论您使用的桌面是什么 JVM 版本。

标签: java oracle triggers


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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;
    /
    

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

    【讨论】:

    • 我再说一遍,点击链接,这里的例子是使用参数:)
    • 我已经浏览了这个文档,但是由于 oracle XE,我无法在 sql 开发者上创建 java 类。 @San 如果我在本地系统中有 java 类,你能指导一下,那么我该如何调用该类方法
    猜你喜欢
    • 2019-04-27
    • 2011-12-22
    • 2020-12-30
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多