oracle触发器调用存储过程调用java类

来源:互联网 发布:matlab 图像配准算法 编辑:程序博客网 时间:2024/06/06 16:25

虽然吭哧了半天这个方法也没用上,权当学习了吧

触发器:

create or replace trigger trigger1 after insert on usersbeginadd_salgrade3('ok');end;

存储过程:

create or replacePROCEDURE add_salgrade3(name varchar2) as LANGUAGE java name 'orclProc/OracleJavaProc3.addSalGrade3(java.lang.String)';

本地java类:

package orclProc;public class OracleJavaProc3 {public static void addSalGrade3(String s){System.out.println("djdjjd");}}
数据库加载java类:

进入本地工作空间,找到该java类所在的目录,cmd操作,然后loadjava -u Admin/Chenweiwei -v -resolved OracleJavaProc3.java

arguments: ''-u'' ''Admin/*** ''-v'' ''-resolve'' ''OracleJavaProc3.java''
creating : source OracleJavaProc3
loading  : source OracleJavaProc3
resolving: source OracleJavaProc3

加载成功

查询一下状态:

  select object_name ,object_type,status from user_objects where 
  object_type like 'JAVA%';

OBJECT_TYPE                          STATUS
------------------------------------ --------------
OracleJavaProc3
JAVA CLASS                           VALID

OracleJavaProc3
JAVA SOURCE                          VALID

测试存储过程:

新增一条记录测试下,成功。

上面的记录不太准确,上午做成的东西被我关了,自己结合网上的例子写的,照着写不成功可能是哪点格式有问题。

这种调用一个不引用其他类的java程序还可以,有复杂引用的时候要用loadjava加载jar包,自己试了试,没有成功。估计是因为存储过程调用java一定要是静态类,而其他类在静态类中实例化肯定会报编译错误。但是网上有引用项目打成的jar包实现的例子,有空自己再尝试尝试吧。

接下来经高人指点决定用 线程队列 来实现。

参考文章:http://www.blogjava.net/caizh2009/articles/311923.html?opt=admin



0 0