久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle外部程序的觸發(fā)小結(jié)

瀏覽:139日期:2023-11-21 17:32:07
在論壇里曾經(jīng)看過(guò)一個(gè)帖子,有位用戶問(wèn)了這么一個(gè)問(wèn)題:Oracle 里一個(gè)表插入一條數(shù)據(jù),提交后,如何讓外部程序收到這個(gè)消息? 當(dāng)時(shí)沒(méi)有留意,現(xiàn)在想想似乎應(yīng)該可以總結(jié)一下了。舉例: 1、過(guò)程中: ... declare myexcept exception; inserted_count1 number; inserted_count2 number; ... begin insert into table values(...); inserted_count1 := sql%rowcount; ... --可以判定inserted_count1是否大于0來(lái)確定是否插入了數(shù)據(jù) commit; inserted_count2 := sql%rowcount; --這里inserted_count2為0 ... --事實(shí)上,這里一定是提交成功才會(huì)執(zhí)行,否則會(huì)跳到exception段 yourprocess(yourpara);--調(diào)用你自己的過(guò)程或語(yǔ)句跟別的過(guò)程通信 ... exception when others then ---你可以根據(jù)sqlcode自己去查具體的提交失敗原因 ... yourprocess_for_fail(yourpara) --調(diào)用你自己的過(guò)程跟別的過(guò)程通信 ... end;2、直接外部操作,建觸發(fā)器: create or replace trigger table after insert for each row ... begin ... yourprocess(yourprara); ... end; 當(dāng)然,2的方法這只能更總到提交前,假如要監(jiān)視提交后狀態(tài),你可以在操作表建立標(biāo)志位或?qū)iT建個(gè)表,操作表發(fā)生變化就通過(guò)trigger更新變化信息到狀態(tài)表,掃描狀態(tài)表就知道是否commit;成功了 我想這位用戶應(yīng)該通過(guò)trigger來(lái)調(diào)用Java source來(lái)實(shí)現(xiàn)插入數(shù)據(jù)后來(lái)通知外部程序來(lái)做一些事情: 使用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. 上面是調(diào)用HelloWorld的例子,你可以修改HelloWorld方法,然后在觸發(fā)器里面調(diào)用以實(shí)現(xiàn)這位用戶的要求!
主站蜘蛛池模板: 东方市| 满洲里市| 新巴尔虎左旗| 新密市| 兴文县| 海安县| 淮滨县| 洱源县| 武胜县| 普兰店市| 岳西县| 扬中市| 唐山市| 宁明县| 蒙阴县| 辰溪县| 元氏县| 延庆县| 台东市| 灯塔市| 海盐县| 泰兴市| 湖口县| 洞口县| 安阳县| 来安县| 泗洪县| 安岳县| 灵宝市| 东城区| 景泰县| 山东| 云梦县| 共和县| 正镶白旗| 辽宁省| 保山市| 垫江县| 色达县| 尼玛县| 柘城县|