SQLServer触发器调用JavaWeb接口的过程详解

 更新时间:2021年12月30日 10:20:49   作者:coderxgc  
sqlServer要想调用web接口,就要使用自带的存储过程。而这些存储过程2005版本以后默认时关闭的,所以要先开启。对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接口的过程详解的文章就介绍到这了,更多相关SQLServer触发器调用接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • sql 取代游标的写法示例

    sql 取代游标的写法示例

    本节主要介绍了sql取代游标该如何写,需要的朋友可以参考下
    2014-07-07
  • MSSQL 游标使用 心得

    MSSQL 游标使用 心得

    MS-SQL游标的使用及理解 windows或DOS的“光标”不同,MS-SQL的游标是一种临时的数据库对象,既对可用来旋转储存在系统永久表中的数据行的副本,也可以指向储存在系统永久表中的数据行的指针。
    2009-04-04
  • SQL中DATEADD和DATEDIFF的用法示例介绍

    SQL中DATEADD和DATEDIFF的用法示例介绍

    这篇文章主要介绍了SQL中DATEADD和DATEDIFF的用法,需要的朋友可以参考下
    2014-07-07
  • 关于sql server批量插入和更新的两种解决方案

    关于sql server批量插入和更新的两种解决方案

    对于sql 来说操作集合类型(一行一行)是比较麻烦的一件事,而一般业务逻辑复杂的系统或项目都会涉及到集合遍历的问题,通常一些人就想到用游标,这里我列出了两种方案,供大家参考
    2013-04-04
  • SQL语句执行顺序详解

    SQL语句执行顺序详解

    本文给大家介绍SQL语句执行顺序详解,涉及到sql语句执行顺序相关知识,对sql语句执行顺序感兴趣的朋友一起看看吧
    2015-10-10
  • sql查询点滴记录

    sql查询点滴记录

    做.NET有一段时间了,如果说不会sql,那肯定是假的,但是真的掌握吗
    2011-12-12
  • 详解SQL中的DQL查询语言

    详解SQL中的DQL查询语言

    这篇文章主要介绍了SQL中的DQL查询语言,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • SQL Report Builder 报表里面的常见问题分析

    SQL Report Builder 报表里面的常见问题分析

    这篇文章主要介绍了SQL Report Builder 报表里面的常见问题分析的相关资料,需要的朋友可以参考下
    2015-12-12
  • sql2000数据库清除重复数据的二种方法

    sql2000数据库清除重复数据的二种方法

    这篇文章主要介绍了sql2000数据库清除重复数据的二种方法,可以使用使用游标实现和sql语句实现,需要的朋友可以参考下
    2014-03-03
  • SQL 多表联合查询的几种方式详解

    SQL 多表联合查询的几种方式详解

    这篇文章主要介绍了SQL 多表联合查询的几种方式,连接查询是关系型数据库中的一个重要标志,这次和大家一起复习多表查询的几种操作,结合实例代码讲解的非常详细,需要的朋友可以参考下
    2023-02-02

最新评论