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:

1 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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

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