sql >> Database teknologi >  >> RDS >> Sqlserver

hvordan man ringer til webservice fra t-sql

Du bør bruge SQLCLR eller et eksternt program til dette. I SQL 20106 kan du bruge R fra TSQL, og i SQL 2017 kan du også bruge Python. Det er sjældent en god idé at foretage webservicekald fra TSQL, og hvis du gør det, bør du generelt trække fra en kø. I så fald kan du bruge et eksternt program.

Sp_oaxxx-processerne er gamle, svære at bruge, lidt kendte, kræver en farlig serverkonfiguration osv. osv.

Når det så er sagt, så er her noget kode, jeg gravede op fra usenet, jeg skrev for længe, ​​lang tid siden:

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. Konverter BufferedInputStream til billede

  2. ld:bibliotek blev ikke fundet for -lzstd under pakkeinstallation til mysql2 gem Ruby på macOS Big Sur 11.4

  3. Hvordan genererer man en hash af resultatsættet i Postgress?

  4. Objekt kan ikke konverteres til en streng i MySQLi PHP