SQLServer触发器调用JavaWeb接口的过程详解
作者:coderxgc 时间:2024-01-17 12:08:45
这几天接到一个需求需要吧不同系统的数据库进行同步,需要我做一个中间平台进行连接,瞬间就想到了触发器调用接口然后通过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.cnblogs.com/xgcc/archive/2021/12/30/15747664.html
标签:SQLServer,触发器,JavaWeb接口
0
投稿
猜你喜欢
通过实例解析python描述符原理作用
2021-01-15 03:14:57
python 从远程服务器下载日志文件的程序
2021-03-06 01:39:15
Pytorch 之修改Tensor部分值方式
2023-04-11 06:45:12
Git 标签使用详解
2023-09-06 14:09:32
python3实现字符串的全排列的方法(无重复字符)
2022-04-14 19:47:56
ASP 80040e14错误的解决方法
2011-03-17 11:21:00
Python设计模式之工厂方法模式实例详解
2021-02-26 05:40:59
Python生成pdf文件的方法
2021-05-11 13:05:36
如何获知IE和NC客户端的屏幕分辨率?
2009-11-23 20:56:00
Dreamweaver量身打造Wordpress留言板(三)
2009-12-13 18:45:00
python 判断网络连通的实现方法
2021-07-28 06:47:29
UTF-8 编码中BOM的检测与删除
2022-06-04 07:44:16
python3.7添加dlib模块的方法
2023-09-16 03:58:55
python学习与数据挖掘应知应会的十大终端命令
2022-03-05 10:38:19
python实现可下载音乐的音乐播放器
2023-04-26 09:01:52
对python 中re.sub,replace(),strip()的区别详解
2022-07-17 21:33:03
go语言中sort包的实现方法与应用详解
2024-02-20 13:56:39
sql 2005不允许进行远程连接可能会导致此失败的解决方法
2024-01-25 17:34:59
Python之Matplotlib文字与注释的使用方法
2022-09-09 10:36:51
python实现嵌套列表平铺的两种方法
2021-06-12 07:20:02