160316、实时处理oracle数据库中表的数据变化

http://blog.csdn.net/as339000204/article/details/45390727

 
 

近期接受项目需求,需要实时处理oracle数据库中表的数据变化,首先想到的是在程序中创建定时器,轮询表。鉴于程序冗余考虑,百度知:oracle数据库java存储过程。Oracle数据库有执行简单java代码的能力,想到一套新的解决思路。

思路:创建oracle数据库触发器,当表的数据发生变化的时候,触发器调用oracle数据库java存储过程,该过程调用程序中的接口,告知程序处理逻辑业务。

 

 

实现

1. 在plsqldev 中编译java代码 调用接口(具体的语法百度即可) 访问地址是:http://192.168.12.57:8088/Jfinaltest/show

 

[sql] 
  1. create or replace and compile java source named jxdClient as  
  2.   
  3. import java.net.*;  
  4.   
  5. public class Demo {  
  6.     
  7.   public static void main(String[] args) {  
  8.   
  9.     try {  
  10.       URL url = new URL("http://192.168.12.57:8088/Jfinaltest/show");  
  11.       URLConnection rulConnection = url.openConnection();  
  12.       rulConnection.connect();  
  13.       rulConnection.getInputStream();  
  14.     } catch (Exception e) {  
  15.       e.printStackTrace();  
  16.     }    
  17.   }  
  18. }  

 

2. 生成存储过程

 

[sql] 
  1. create or replace procedure prc_hehe as language java name 'Demo.main(java.lang.String[])';  

 

3. 编写触发器调用存储过程(pre_hehe)

[sql] 
  1. create or replace trigger jxd7_trigger_wf_nodeinstance  
  2. after update or insert  
  3. on jxd7_wf_nodeinstance  
  4. for each row  
  5. begin  
  6.   if inserting then  
  7.     prc_hehe;  
  8.   elsif updating then  
  9.     prc_hehe;  
  10.   elsif deleting then  
  11.     prc_hehe;  
  12.   end if;  
  13. end;  

小结:每次表中的数据发生变化的时候,都会执行触发器中的存储过程,存储过程会调用程序的接口,之后程序处理业务逻辑。减少了代码量,保证了数据处理的实时性,减少了程序的压力

原文地址:https://www.cnblogs.com/zrbfree/p/5286068.html