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