问题:## 标题
sqlserver数据库中,监听订单表某个字段变化,调用web服务
思路:## 标题
触发器监听表中某个字段,调用存储过程通过web服务同步相应的数据。
如果数据库是sqlserver2005版本以上需要变更如下设置:
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
触发器样例:## 标题
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER 触发器名称
ON 表名
AFTER UPDATE
AS
if UPDATE(chepaihao)
BEGIN
declare @bianhao char (20),
@chepaihao char (20);
select @bianhao=Rtrim([bianhao])
from baseinfo ;
exec 存储过程名称 @bianhao
END
存储过程样例:## 标题
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE 存储过程
@bianhao char (20)
AS
BEGIN
declare @ServiceUrl as varchar(4000)
set @ServiceUrl = '接口访问地址'
DECLARE @data varchar(4000);
--发送数据
set @data='{"params":[{"no": "'+CONVERT(VARCHAR, @bianhao)+'"}]}'
Declare @Object as Int
Declare @ResponseText AS varchar(8000) ;
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'POST',@ServiceUrl,'false'
Exec sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type','application/json;charset=UTF-8'
Exec sp_OAMethod @Object, 'send', NULL, @data --发送数据
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
EXEC sp_OAGetErrorInfo @Object --异常输出
Select @ResponseText
Exec sp_OADestroy @Object
END