oracle触发器 调用 web接口

最近要求开发当数据表发生变化的时候调用web接口的需求,上网找了好几篇文章看着都觉得不是很好,也根据别人的思路去实现了下,感觉都不太理想,最后使用URLConnection实现了调用。具体查看一下代码,亲自测试可以使用。可以根据自己的需求去修改。

##一、触发器简介

触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。

1.首先在oracle中创建java sources

create or replace and compile java source named jym as

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

public class JYM {

public static void sendGet(String url,String title){

String result ="";

BufferedReader in = null;

try{

String urlName = url+"?title="+title;

URL realUrl = new URL(urlName);

URLConnection conn = realUrl.openConnection();

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.connect();

in= new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line;

while((line = in.readLine())!=null){

result += "/n"+line;

}

}catch(Exception e){

System.out.println("发送GET请求出现异常"+e);

e.printStackTrace();

}

finally{

try{

if(in !=null){

in.close();

}

}catch(Exception e){

e.printStackTrace();

}

}

}

public static void say(String ip,String title) throws Exception {

JYM.sendGet(ip,title);

}

}

2.创建存储过程

create or replace procedure socket(ip varchar2,title varchar2)

as language java name

'JYM.say(java.lang.String,java.lang.String)';

3.创建触发器

create or replace trigger insterMessageNotionAfter

after  insert on message_notion

for each row

begin

socket('http://192.168.90.132:8080/spring/ydbg/meeting/meetingpaln/related/110928171642707',:new.title);

end insterMessageNotionAfter;

代码写好之后可以先用存储过程测试

sql代码

socket('http://192.168.90.132:8080/spring/ydbg/meeting/meetingpaln/related/110928171642707',:new.title);

为了能在控制台中看见错误信息,要先运行下面3句话

Sql代码

1. set serveroutput on;

2. set serveroutput on size 5000;

3. call dbms_java.set_output(5000);

假如你运行存储过程时爆出了  请给用户复制权限的提示则按照提示在sysdba 下赋权限,如:

Sql代码

exec dbms_java.grant_permission('zhym','SYS:java.net.SocketPermission','192.168.9.12:18002','connect,resolve')

exec dbms_java.grant_permission('ZHYM','SYS:java.net.SocketPermission','127.0.0.1:1521','connect,resolve')

exec 后面的语句会在你的报错提示中打印出来,只要前面加exec就可以了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,660评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,963评论 19 139
  • 2017年5月17日 Kylin_Wu 标注(★☆)为考纲明确给出考点(必考) 常见手机系统(★☆) And...
    Azur_wxj阅读 5,822评论 0 10
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,878评论 1 0
  • 所有慘烈代價的本身,都是值得珍視的補償。 有個女孩子,前前後後談過二十幾次戀愛,直到現在也沒結婚。 她的朋友們起初...
    央默阅读 1,252评论 0 0

友情链接更多精彩内容