最近公司的app产品需要做一个消息推送,但是消息推送功能需要调用http。但是原系统又不能修改代码,刷新表数据循环又太占资源还不能保证时效性。
于是想到了触发器可以解决时效性的问题,在网上刚好找到了mssql可以调用HTTP,这样不是可以直接调用了吗
放上调用HTTP的代码
首先要设置功能开关
EXEC sp_configure 'Ole Automation Procedures';
GO
GOsp_configure 'show advanced options', 1;
RECONFIGURE;
go
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
ALTER PROCEDURE [dbo].[P_GET_HttpRequestData](
@URL varchar(500),
@returnText varchar(2000) OUT
)
AS
BEGIN
DECLARE @object int,
@errSrc int,
@status int
--初始化对
EXEC @status = SP_OACreate 'Msxml2.ServerXMLHTTP.3.0', @object OUT
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
--创建链接
EXEC @status= SP_OAMethod @object,'open',NULL,'GET',@URL
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
EXEC @status=SP_OAMethod @object,'setRequestHeader','Content-Type','application/x-www-form-urlencoded'
--发起请求
EXEC @status= SP_OAMethod @object,'send',NULL
IF @status <> 0
BEGIN
EXEC @status= SP_OAMethod @object,'send',NULL
--EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
--RETURN
END
--获取返回
EXEC @status= SP_OAGetProperty @object,'responseText',@returnText OUT
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
END;