Oracle外部程序的触发

oracle 里一个表插入一条数据,提交后,如何让外部程序收到这个消息?

  

  1、过程中:...

  declare

  myexcept exception;

  inserted_count1 number;

  inserted_count2 number;

  ...

  begin

  insert into table values(...);

  inserted_count1 := sql%rowcount;

  ... --可以判断inserted_count1是否大于0来确定是否插入了数据

  commit;

  inserted_count2 := sql%rowcount; --这里inserted_count2为0

  ... --事实上,这里一定是提交成功才会执行,否则会跳到exception段

   yourprocess(yourpara);--调用你自己的过程或语句跟别的过程通信

  ...

  exception

  when others then ---你可以根据sqlcode自己去查具体的提交失败原因

  ...

   yourprocess_for_fail(yourpara) --调用你自己的过程跟别的过程通信

  ...

  end;

  2、直接外部操作,建触发器:

  create or replace trigger table after insert for each row

  ...

  begin

  ...

   yourprocess(yourprara);

  ...

  end;

  当然,2的方法这只能更总到提交前, 如果要监视提交后状态,你可以在操作表建立标志位或专门建个表,操作表发生变化就通过trigger更新变化信息到状态表,扫描状态表就知道是否 commit;成功了

  我想这位用户应该通过trigger 来调用java source来实现插入数据后来通知外部程序来做一些事情:

  使用java source的例子如下:

  SQL> create or replace and compile java source named HelloWorld

  2 as

  3 public class HelloWorld {

  4 public static void db_run (){

  5 System.out.println("Hello World");

  6 }

  7 }

  8 /

  Java created.

   

  SQL> create or replace procedure run_helloworld

  2 as language java

  3 name 'HelloWorld.db_run()';

  4 /

  Procedure created.

  SQL> set serveroutput on size 5000

  SQL> call dbms_java.set_output(5000) ;

  Call completed.

  SQL>

  SQL> exec run_helloworld ;

  Hello World

  PL/SQL procedure successfully completed.

  上面是调用HelloWorld的例 子,可以修改HelloWorld方法,然后在触发器里面调用以实现用户的要求!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值