sql >> Database >  >> RDS >> Sqlserver

hoe de webservice te bellen vanuit t-sql

Gebruik hiervoor SQLCLR of een extern programma. In SQL 20106 kun je R uit TSQL gebruiken, en in SQL 2017 kun je ook Python gebruiken. Het is zelden een goed idee om webservice-aanroepen vanuit TSQL te doen, en als u dat doet, zou u over het algemeen uit een wachtrij moeten trekken. In dat geval kunt u een extern programma gebruiken.

De sp_oaxxx-procedures zijn oud, moeilijk te gebruiken, weinig bekend, vereisen een gevaarlijke serverconfiguratie, enz.

Dat gezegd hebbende, hier is wat code die ik heb opgegraven van usenet die ik lang geleden heb geschreven:

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


  1. hoe waarden met komma in te voegen? in switch-instructie

  2. Veld met aliassen opnieuw gebruiken in SQL SELECT-instructie

  3. Hoe HTTP-authenticatie te gebruiken met PHP en vervolgens de ingevoerde gegevens uit te voeren tegen een database?

  4. Oracle 12c Belangrijkste nieuwe functies