SQLServer触发器调用JavaWeb接口
这几天接到一个需求需要吧不同系统的数据库进行同步,需要我做一个中间平台进行连接,瞬间就想到了触发器调用接口然后通过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执行插入另一个数据库。
然后执行插入语句就可以看到执行的结果了~
SQLServer触发器调用JavaWeb接口的更多相关文章
- oracle触发器 调用 web接口
最近要求开发当数据表发生变化的时候调用web接口的需求,上网找了好几篇文章看着都觉得不是很好,也根据别人的思路去实现了下,感觉都不太理想,最后使用URLConnection实现了调用.具体查看一下代码 ...
- sqlserver数据库触发器调用外部exe
sqlserver数据库触发器调用外部exe,同事可以选择参入参数! sqlserver使用 master..xp_cmdshell 进行外部exe的执行. 使用master..xp_cmdshell ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- SQL调用WebService接口
今天在做一个非常奇葩的东西.中间有个过程要在SQL触发器里面调用webservice接口.呵呵~ ALTER TRIGGER tgr_UpdateMemcached ON dbo.[User] AFT ...
- SqlServer触发器的理解
SqlServer触发器是与表事件相关的特殊存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发.比如当对一个表进行操作( insert,delete, update)时就会激活它执行. ...
- 一次SQLSERVER触发器编写感悟
背景:BOSS须要我写一个工厂採集端到server端的数据同步触发器,数据库採用的是sqlserver2008 需求:将多台採集机的数据同步到server中,假设採集端数据库与server数据库连接失 ...
- python3.4.3 调用http接口 解析response xml后插入数据库
工作中需要调用一个http的接口,等不及java组开发,就试着用python去调用.Python版本3.4.3 完整的流程包括:从sqlServer取待调用的合同列表 -> 循环调用http接口 ...
- WebApi接口 - 如何在应用中调用webapi接口
很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...
- C#动态调用WCF接口,两种方式任你选。
写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...
随机推荐
- springboot项目WEB-INF 目录 jsp页面报404
我是跟着<深入浅出 Spring Boot 2.x>这本书学习的,在"初识Spring MVC"章节中,搭建项目,然后访问jsp页面时报错:Path with &quo ...
- LuoguP7679 [COCI2008-2009#5] JABUKA 题解
Content Mirko 拥有 \(R\) 个红苹果和 \(G\) 个绿苹果,他想把他分给若干个朋友,使得所有朋友分得的红苹果个数和绿苹果个数都一样.现给定 \(R,G\),请你帮助 Mirko 找 ...
- centos使用yum安装报错: 另一个应用程序是:PackageKit
已加载插件:fastestmirror, langpacks/var/run/yum.pid 已被锁定,PID 为 13189 的另一个程序正在运行.Another app is currently ...
- IDEA版本2020.1全局MAVEN配置
我们用IDEA打开项目有时候要每次配置maven地址,这样就很麻烦 我们可以直接设置全局的 这样所有新打开的项目都能使用
- c++11之 algorithm 算法库新增 minmax_element同时计算最大值和最小值
0.时刻提醒自己 Note: vector的释放 1. minmax_element 功能 寻找范围 [first, last) 中最小和最大的元素. 2. 头文件 #include <algo ...
- 【LeetCode】640. Solve the Equation 解题报告(Python)
[LeetCode]640. Solve the Equation 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: ht ...
- 图的存储:邻接矩阵(C++)
1. 演示 无向图: 有向网: 2. 代码 1 #include <iostream> 2 #include <unordered_map> 3 #include <ve ...
- 网站迁移纪实:从Web Form 到 Asp.Net Core (Abp vNext 自定义开发)
问题和需求 从2004年上线,ZLDNN.COM运行已经超过16年了,一直使用DotNetNuke平台(现在叫DNN Platform),从最初的DotNetNuke 2.1到现在使用的7.4.先是在 ...
- 如何在HTML中添加表格标题?(HTML中table添加标题的2种方法)
第一种:通过 fieldset 添加标题框 示例代码: <html> <body> <fieldset> <legend>fieldset添加框标题&l ...
- WiFi6模块 RW6852-PCIE
RW6852-PCIE是一款高度集成的模块,支持2T2R 802.11ax解决方案,具有MU-MIMO.无线LAN (WLAN) PCI Express网络接口控制器和HS-UART混合接口.它结合了 ...