Трябва да използвате SQLCLR или външна програма за това. В SQL 20106 можете да използвате R от TSQL, а в SQL 2017 можете да използвате и Python. Рядко е добра идея да правите извиквания на уеб услуги от TSQL и ако го направите, обикновено трябва да изтегляте от опашка. В този случай можете да използвате външна програма.
Процедурите sp_oaxxx са стари, трудни за използване, малко известни, изискват опасна сървърна конфигурация и т.н., и т.н.
Като се има предвид това, ето код, който изрових от usenet, който написах преди много, много време:
create procedure http_get( @sUrl varchar(200), @response varchar(8000) out)
As
begin
Declare
@obj int
,@hr int
,@status int
,@msg varchar(255)
exec @hr = sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
if @hr < 0 begin Raiserror('sp_OACreate MSXML2.ServerXMLHttp failed', 16,1) return 1 end
exec @hr = sp_OAMethod @obj, 'Open', NULL, 'GET', @sUrl, false
if @hr <0 begin set @msg = 'sp_OAMethod Open failed' goto eh end
exec @hr = sp_OAMethod @obj, 'send'
if @hr <0 begin set @msg = 'sp_OAMethod Send failed' goto eh end
exec @hr = sp_OAGetProperty @obj, 'status', @status OUT
if @hr <0 begin set @msg = 'sp_OAMethod read status failed' goto eh end
if @status <> 200 begin set @msg = 'sp_OAMethod http status ' + str(@status) goto eh end
exec @hr = sp_OAGetProperty @obj, 'responseText', @response OUT
if @hr <0 begin set @msg = 'sp_OAMethod read response failed' goto eh end
exec @hr = sp_OADestroy @obj
return 0
eh:
exec @hr = sp_OADestroy @obj
Raiserror(@msg, 16, 1)
return 1
end