SQLServer觸發(fā)器調(diào)用JavaWeb接口的過程詳解
這幾天接到一個需求需要吧不同系統(tǒng)的數(shù)據(jù)庫進行同步,需要我做一個中間平臺進行連接,瞬間就想到了觸發(fā)器調(diào)用接口然后通過API進行傳遞再寫入另一個數(shù)據(jù)庫。
sqlServer觸發(fā)器調(diào)用JavaWeb接口
1、開啟 Ole Automation Procedures
sqlServer要想調(diào)用web接口,就要使用自帶的存儲過程。而這些存儲過程2005版本以后默認時關(guān)閉的,所以要先開啟。
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automation Procedures'; GO
關(guān)閉 Ole Automation Procedures
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automation Procedures'; GO
關(guān)閉高級選項
sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
然后就可以進行寫觸發(fā)器,因為我這邊表的內(nèi)容比較多,大家直接看代碼就好了。
CREATE TRIGGER [dbo].[kingdee] ON [dbo].[稱重信息] WITH EXECUTE AS CALLER FOR INSERT AS BEGIN -- Type the SQL Here. DECLARE @fbillno int; DECLARE @carid varchar(4000); DECLARE @type varchar(4000); DECLARE @sendplace varchar(4000); DECLARE @consignee varchar(4000); DECLARE @material varchar(4000); DECLARE @specification varchar(4000); DECLARE @gw varchar(4000); DECLARE @tare varchar(4000); DECLARE @nw varchar(4000); DECLARE @kw varchar(4000); DECLARE @aw varchar(4000); DECLARE @price varchar(4000); DECLARE @money varchar(4000); DECLARE @zfxs varchar(4000); DECLARE @square varchar(4000); DECLARE @weighingcost varchar(4000); DECLARE @gwtime varchar(4000); DECLARE @taretime varchar(4000); declare @url varchar(4000); declare @object int; declare @responseText varchar(4000); SELECT @fbillno = (select 流水號 from inserted); SELECT @carid = (select 車號 from inserted); SELECT @type = (select 過磅類型 from inserted); SELECT @sendplace = (select 發(fā)貨單位 from inserted); SELECT @consignee = (select 收貨單位 from inserted); SELECT @material = (select 貨名 from inserted); SELECT @specification = (select 規(guī)格 from inserted); SELECT @gw = (select 毛重 from inserted); SELECT @tare = (select 皮重 from inserted); SELECT @nw = (select 凈重 from inserted); SELECT @kw = (select 扣重 from inserted); SELECT @aw = (select 實重 from inserted); SELECT @price = (select 單價 from inserted); SELECT @money = (select 金額 from inserted); SELECT @zfxs = (select 折方系數(shù) from inserted); SELECT @square = (select 方量 from inserted); SELECT @weighingcost = (select 過磅費 from inserted); SELECT @gwtime = (select 毛重時間 from inserted); SELECT @taretime = (select 皮重時間 from inserted); SELECT @url = 'http://ip/saveweight/' + CONVERT(INT, @fbillno)+'/'+ CONVERT(VARCHAR, @carid) +'/'+ CONVERT(VARCHAR, @type)+'/'+ CONVERT(VARCHAR, @sendplace)+'/'+ CONVERT(VARCHAR, @consignee)+'/'+ CONVERT(VARCHAR, @material) +'/'+ CONVERT(VARCHAR, @specification)+'/'+ CONVERT(VARCHAR, @gw)+'/'+ CONVERT(VARCHAR, @tare)+'/'+ CONVERT(VARCHAR, @nw) +'/'+ CONVERT(VARCHAR, @kw)+'/'+ CONVERT(VARCHAR, @aw)+'/'+ CONVERT(VARCHAR, @price)+'/'+ CONVERT(VARCHAR, @money) +'/'+ CONVERT(VARCHAR, @zfxs)+'/'+ CONVERT(VARCHAR, @square)+'/'+ CONVERT(VARCHAR, @weighingcost)+'/'+ CONVERT(VARCHAR, @gwtime) +'/'+ CONVERT(VARCHAR, @taretime); print @url; -- insert into one (id, name) VALUES (@id, @url); exec sp_OACreate'MSXML2.XMLHTTP',@object out exec sp_OAMethod @object,'open',null,'get',@url,'false' exec sp_OAMethod @object,'send' exec sp_OAMethod @object,'responseText',@responseText output print @responseText exec sp_OADestroy @object SET NOCOUNT ON; END GO EXEC sp_addextendedproperty 'MS_Description', N'稱重信息表插入后觸發(fā)器', 'SCHEMA', N'dbo', 'TABLE', N'稱重信息', 'TRIGGER', N'kingdee'
看著復雜其實一點也不復雜,因為這個數(shù)據(jù)庫的表是中文(不是我建的表系統(tǒng)中的中文的我沒辦法改),大致就是獲取插入的數(shù)據(jù)然后進行觸發(fā),請求,然后API執(zhí)行插入另一個數(shù)據(jù)庫。
然后執(zhí)行插入語句就可以看到執(zhí)行的結(jié)果了~
到此這篇關(guān)于SQLServer觸發(fā)器調(diào)用JavaWeb接口的過程詳解的文章就介紹到這了,更多相關(guān)SQLServer觸發(fā)器調(diào)用接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于sql server批量插入和更新的兩種解決方案
對于sql 來說操作集合類型(一行一行)是比較麻煩的一件事,而一般業(yè)務(wù)邏輯復雜的系統(tǒng)或項目都會涉及到集合遍歷的問題,通常一些人就想到用游標,這里我列出了兩種方案,供大家參考2013-04-04SQL Report Builder 報表里面的常見問題分析
這篇文章主要介紹了SQL Report Builder 報表里面的常見問題分析的相關(guān)資料,需要的朋友可以參考下2015-12-12sql2000數(shù)據(jù)庫清除重復數(shù)據(jù)的二種方法
這篇文章主要介紹了sql2000數(shù)據(jù)庫清除重復數(shù)據(jù)的二種方法,可以使用使用游標實現(xiàn)和sql語句實現(xiàn),需要的朋友可以參考下2014-03-03