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

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

触发器:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值