Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

как да извикате уеб услуга от t-sql

Трябва да използвате 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на съхранена процедура за добавяне с автоматично нарастване като основно поле?

  2. Функция SQL Cross Tab

  3. Върнете текущото име за влизане в SQL Server (T-SQL)

  4. Оптимистично срещу песимистично заключване

  5. Как да хвана SqlException, причинена от блокиране?