sql >> データベース >  >> RDS >> Sqlserver

t-sql から Web サービスを呼び出す方法

    これには、SQLCLR または外部プログラムを使用する必要があります。 SQL 20106 では TSQL から R を使用でき、SQL 2017 では Python も使用できます。 TSQL から Web サービスの呼び出しを行うことはめったにありません。そうする場合は、通常、キューからプルする必要があります。その場合、外部プログラムを使用できます。

    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. 1つのテーブルに値がない場合は、2つのテーブルを結合します

    2. SQLServerピボットと複数結合

    3. Entity Framework Code First CTP 5を使用して画像を保存する方法は?

    4. エラーコード:1222。使用されているSELECTステートメントの列数が異なります。