這幾天接到一個(gè)需求需要吧不同系統(tǒng)的數(shù)據(jù)庫(kù)進(jìn)行同步,需要我做一個(gè)中間平臺(tái)進(jìn)行連接,瞬間就想到了觸發(fā)器調(diào)用接口然后通過API進(jìn)行傳遞再寫入另一個(gè)數(shù)據(jù)庫(kù)。
sqlServer觸發(fā)器調(diào)用JavaWeb接口
1、開啟 Ole Automation Procedures
sqlServer要想調(diào)用web接口,就要使用自帶的存儲(chǔ)過程。而這些存儲(chǔ)過程2005版本以后默認(rèn)時(shí)關(guān)閉的,所以要先開啟。
1
2
3
4
5
6
7
8
9
10
|
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
1
2
3
4
5
6
7
8
9
10
|
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)閉高級(jí)選項(xiàng)
1
2
3
4
|
sp_configure 'show advanced options' , 0; GO RECONFIGURE; GO |
然后就可以進(jìn)行寫觸發(fā)器,因?yàn)槲疫@邊表的內(nèi)容比較多,大家直接看代碼就好了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
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 流水號(hào) from inserted); SELECT @carid = ( select 車號(hào) 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 實(shí)重 from inserted); SELECT @price = ( select 單價(jià) from inserted); SELECT @money = ( select 金額 from inserted); SELECT @zfxs = ( select 折方系數(shù) from inserted); SELECT @square = ( select 方量 from inserted); SELECT @weighingcost = ( select 過磅費(fèi) from inserted); SELECT @gwtime = ( select 毛重時(shí)間 from inserted); SELECT @taretime = ( select 皮重時(shí)間 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' |
看著復(fù)雜其實(shí)一點(diǎn)也不復(fù)雜,因?yàn)檫@個(gè)數(shù)據(jù)庫(kù)的表是中文(不是我建的表系統(tǒng)中的中文的我沒辦法改),大致就是獲取插入的數(shù)據(jù)然后進(jìn)行觸發(fā),請(qǐng)求,然后API執(zhí)行插入另一個(gè)數(shù)據(jù)庫(kù)。
然后執(zhí)行插入語(yǔ)句就可以看到執(zhí)行的結(jié)果了~
到此這篇關(guān)于SQLServer觸發(fā)器調(diào)用JavaWeb接口的過程詳解的文章就介紹到這了,更多相關(guān)SQLServer觸發(fā)器調(diào)用接口內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.cnblogs.com/xgcc/archive/2021/12/30/15747664.html