oracle觸發(fā)器 調(diào)用 web接口

最近要求開發(fā)當(dāng)數(shù)據(jù)表發(fā)生變化的時(shí)候調(diào)用web接口的需求,上網(wǎng)找了好幾篇文章看著都覺(jué)得不是很好,也根據(jù)別人的思路去實(shí)現(xiàn)了下,感覺(jué)都不太理想,最后使用URLConnection實(shí)現(xiàn)了調(diào)用。具體查看一下代碼,親自測(cè)試可以使用。可以根據(jù)自己的需求去修改。

##一、觸發(fā)器簡(jiǎn)介

觸發(fā)器的定義就是說(shuō)某個(gè)條件成立的時(shí)候,觸發(fā)器里面所定義的語(yǔ)句就會(huì)被自動(dòng)的執(zhí)行。因此觸發(fā)器不需要人為的去調(diào)用,也不能調(diào)用。然后,觸發(fā)器的觸發(fā)條件其實(shí)在你定義的時(shí)候就已經(jīng)設(shè)定好了。這里面需要說(shuō)明一下,觸發(fā)器可以分為語(yǔ)句級(jí)觸發(fā)器和行級(jí)觸發(fā)器。詳細(xì)的介紹可以參考網(wǎng)上的資料,簡(jiǎn)單的說(shuō)就是語(yǔ)句級(jí)的觸發(fā)器可以在某些語(yǔ)句執(zhí)行前或執(zhí)行后被觸發(fā)。而行級(jí)觸發(fā)器則是在定義的了觸發(fā)的表中的行數(shù)據(jù)改變時(shí)就會(huì)被觸發(fā)一次。

1.首先在oracle中創(chuàng)建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("發(fā)送GET請(qǐng)求出現(xiàn)異常"+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.創(chuàng)建存儲(chǔ)過(guò)程

?

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

as language java name

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

3.創(chuàng)建觸發(fā)器

?

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;

代碼寫好之后可以先用存儲(chǔ)過(guò)程測(cè)試

sql代碼

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

為了能在控制臺(tái)中看見(jiàn)錯(cuò)誤信息,要先運(yùn)行下面3句話

Sql代碼

1. set serveroutput on;

2. set serveroutput on size 5000;

3. call dbms_java.set_output(5000);

假如你運(yùn)行存儲(chǔ)過(guò)程時(shí)爆出了? 請(qǐng)給用戶復(fù)制權(quán)限的提示則按照提示在sysdba 下賦權(quán)限,如:

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 后面的語(yǔ)句會(huì)在你的報(bào)錯(cuò)提示中打印出來(lái),只要前面加exec就可以了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,673評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • 2017年5月17日 Kylin_Wu 標(biāo)注(★☆)為考綱明確給出考點(diǎn)(必考) 常見(jiàn)手機(jī)系統(tǒng)(★☆) And...
    Azur_wxj閱讀 1,959評(píng)論 0 10
  • JAVA面試題 1、作用域public,private,protected,以及不寫時(shí)的區(qū)別答:區(qū)別如下:作用域 ...
    JA尐白閱讀 1,263評(píng)論 1 0
  • 所有慘烈代價(jià)的本身,都是值得珍視的補(bǔ)償。 有個(gè)女孩子,前前後後談過(guò)二十幾次戀愛(ài),直到現(xiàn)在也沒(méi)結(jié)婚。 她的朋友們起初...
    央默閱讀 175評(píng)論 0 0

友情鏈接更多精彩內(nèi)容