13. April 2015 · von Joerg Sager

XML Webservice Abfrage mit T-SQL – Microsoft SQL Server

Ein weit verbreiteter Irrglaube ist, dass man, um XML-Daten von einem Webservice zu holen, externe Programme benötigt. Doch Webservice-Daten können auch direkt über T-SQL ins Datawarehouse geladen werden.

Nicht nur mit SQL Server Integration Services (SSIS) können XML-Daten von einem Webservice in das Datawarehouse importiert werden. Es besteht auch die Möglichkeit, XML direkt im T-SQL zu verarbeiten. Diese Funktionalität umfasst die Kommunikation mit SOAP-Schnittstellen, REST-Webservices oder auch das Abrufen von einfachen XML-Dateien.

In dem nachfolgenden Beispiel werden aktuelle Wetterinformationen für eine beliebige Stadt von der OpenWeatherMap-API geladen:

-- Konfiguration um die aktuelle Temperatur für die Stadt, Land zu bekommen.
declare @city nvarchar(200) = 'Bonn,de'

-- Webservice URL
declare @webservice as Varchar(8000) = 'http://api.openweathermap.org/data/2.5/weather?q='+@city+'&mode=xml';

declare @Object as Int;
-- Temporäre variable um das Ergebnis des Webrequest zwischen zu speichern.
declare @ResponseText as Varchar(8000); 

-- Konfiguration des Webservice Request
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @webservice, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
 
-- Zum Testen/Prüfen des Ergebnisses "Select @ResponseText" verwenden
Select @ResponseText as WebserviceErgebnis

-- Webservice Object aus dem Speicher freigeben.
Exec sp_OADestroy @Object

-- XML Variable zum auswerten erstellen
declare @xml xml = CONVERT(XML, @ResponseText)

-- Daten aus dem XML abrufen
select @xml.value('(/current/city/@name)[1]', 'nvarchar(max)') as Stadt,
 @xml.value('(/current/temperature/@value)[1]', 'float')-273.15 as [Temperatur (in Celsius)] 
GO

Webservice Result Gate4

 

 


Kategorien: SQL Server, Technical

Schlagwörter: ,


Diesen Blogeintrag bewerten:

4 Stimmen mit durchschnittlich 5/5 Punkten

Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?

Nehmen Sie mit uns Kontakt auf!

Wir unterstützen Sie gerne bei Ihren Vorhaben!


Schreibe einen Kommentar

Kontakt.
Lassen Sie sich von uns beraten
Wir freuen uns über Ihr Interesse an unseren Leistungen. Hinterlassen Sie
uns Ihren Namen, Ihre Telefonnummer und E-Mail Adresse – wir melden
uns schnellstmöglich bei Ihnen.
Kontakt aufnehmen