這幾天接到一個需求需要吧不同系統的資料庫進行同步,需要我做一個中間平臺進行連接,瞬間就想到了觸發器呼叫介面然后通過API進行傳遞再寫入另一個資料庫,
sqlServer觸發器呼叫JavaWeb介面
1、開啟 Ole Automation Procedures
sqlServer要想呼叫web介面,就要使用自帶的存盤程序,而這些存盤程序2005版本以后默認時關閉的,所以要先開啟,
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
關閉 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
關閉高級選項
sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO
然后就可以進行寫觸發器,因為我這邊表的內容比較多,大家直接看代碼就好了,
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 發貨單位 from inserted);
SELECT @consignee = (select 識訓單位 from inserted);
SELECT @material = (select 貨名 from inserted);
SELECT @specification = (select 規格 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 折方系數 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'稱重資訊表插入后觸發器',
'SCHEMA', N'dbo',
'TABLE', N'稱重資訊',
'TRIGGER', N'kingdee'
看著復雜其實一點也不復雜,因為這個資料庫的表是中文(不是我建的表系統中的中文的我沒辦法改),大致就是獲取插入的資料然后進行觸發,請求,然后API執行插入另一個資料庫,
然后執行插入陳述句就可以看到執行的結果了~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398383.html
標籤:Java
