虽然吭哧了半天这个方法也没用上,权当学习了吧
触发器:
create or replace trigger trigger1
after insert on users
begin
add_salgrade3('ok');
end;
存储过程:
create or replace
PROCEDURE 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