如何在MSSQL数据库中调用HTTP

最近公司的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;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章