如何在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;

 

 

posted @ 2019-09-16 17:50  米晔  阅读(392)  评论(0)    收藏  举报