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

 

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