您当前的位置: 首页 > 数据库教程 > Oracle教程 > 网友经验谈之Oracle外部程序触发小结

网友经验谈之Oracle外部程序触发小结

作者:guanchaofeng 来源:不详 发布时间: 2009-09-30 08:38 点击: 次
在论坛里曾经看过一个帖子,有位用户问了这么一个问题:oracle里一个表插入一条数据,提交后,如何让外部程序收到这个消息? 当时没有留意,现在想想好像应该可以总结一下了。举例: 1、过程中: ... declare myexceptexception; inserted_count1number; ins

网友经验谈之Oracle外部程序触发小结

  在论坛里曾经看过一个帖子,有位用户问了这么一个问题:oracle里一个表插入一条数据,提交后,如何让外部程序收到这个消息?
  
  当时没有留意,现在想想好像应该可以总结一下了。举例:
  
  1、过程中:
  
  ...
  declare
  myexceptexception;
  inserted_count1number;
  inserted_count2number;
  ...
  begin
  insertintotablevalues(...);
  inserted_count1:=sql%rowcount;
  ...--可以判断inserted_count1是否大于0来确定是否插入了数据
  commit;
  inserted_count2:=sql%rowcount;--这里inserted_count2为0
  ...--事实上,这里一定是提交成功才会执行,否则会跳到exception段
  yourprocess(yourpara);--调用你自己的过程或语句跟别的过程通信
  ...
  exception
  whenothersthen---你可以根据sqlcode自己去查具体的提交失败原因
  ...
  yourprocess_for_fail(yourpara)--调用你自己的过程跟别的过程通信
  ...
  end;
  
  2、直接外部操作,建触发器:
  
  createorreplacetriggertableafterinsertforeachrow
  ...
  begin
  ...
  yourprocess(yourprara);
  ...
  end;
  
  当然,2的方法这只能更总到提交前,如果要监视提交后状态,你可以在操作表建立标志位或专门建个表,操作表发生变化就通过trigger更新变化信息到状态表,扫描状态表就知道是否commit;成功了
  
  我想这位用户应该通过trigger来调用javasource来实现插入数据后来通知外部程序来做一些事情:
  
  使用javasource的例子如下:
  
  SQL>createorreplaceandcompilejavasourcenamedHelloWorld
  2as
  3publicclassHelloWorld{
  4publicstaticvoiddb_run(){
  5System.out.println("HelloWorld");
  6}
  7}
  8/
  
  Javacreated.
  
  SQL>createorreplaceprocedurerun_helloworld
  2aslanguagejava
  3name'HelloWorld.db_run()';
  4/
  
  Procedurecreated.
  
  SQL>setserveroutputonsize5000
  SQL>calldbms_java.set_output(5000);
  
  Callcompleted.
  
  SQL>
  SQL>execrun_helloworld;
  HelloWorld
  
  PL/SQLproceduresuccessfullycompleted.

分享到:
本文"网友经验谈之Oracle外部程序触发小结"由远航站长收集整理而来,仅供大家学习与参考使用。更多免费得5元微信现金红包制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 免费得5元微信现金红包声明 - 友情连接- 免费得5元微信现金红包地图 - 站点地图 - 返回顶部
Copyright ? 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与免费得5元微信现金红包编程等各类免费得5元微信现金红包制作教程.
官方QQ:445490277 免费得5元微信现金红包群:26680406 免费得5元微信现金红包备案号:豫ICP备07500620号-4