Die Lücke zwischen SQL Server und Abfragetool mußte man bisher mit ADO und ASP überbrücken.
Im vorherigen Artikel haben wir bereits die Vorgehensweise kennengelernt, wie man den MS SQL Server vorbereiten muss um Daten im XML Format abfragen zu können.
Dank der XML Unterstützung des SQL Servers kann im Web fast direkt auf die Daten direkt zugreifen.
Mit SQL Anweisungen haben Sie sich sicher schon vertraut gemacht oder können auch in anderen Artikel einiges dazu nachlesen.
Nehmen wir mal ein kleines Beispiel:
Mit der nachfolgenden Syntax wollen wir die Umsätze der Kunden ansehen.
Die Abfrage würde im Query so aussehen:
Select * from Kunden.KdID, Kunden.Kdname, Bestell.BstID, Bestell.Summe from Kunden Left Outer Join Bestell on Bestell.KdID=Kunden.KdID |
Damit die Ergebnisse im XML Format zu uns gelangen müssen wir die Syntax noch um FOR XML AUTO ergänzen. Also so:
Select * from Kunden.KdID, Kunden.Kdname, Bestell.BstID, Bestell.Summe from Kunden Left Outer Join Bestell on Bestell.KdID=Kunden.KdID FOR XML AUTO |
Das Ergebnis sieht dann (auszugweise) wie folgt aus:
<Kunden kdID="123" KdName="Tobias Ulm"> <Bestell BstID="45" Summe="123,45"/> <Bestell BstID="232" Summe="234,50"/> </Kunden> <Kunden kdID="223" KdName="Shinja Strasser"> <Bestell BstID="46" Summe="20,45"/> <Bestell BstID="556" Summe="100,50"/> </Kunden> |
Was hat der SQL Server getan? Außer einem nicht wohlgeformten Dokument , sehen wir, daß alle Tabellennamen als Elemente ausgegeben werden, während die Inhalte, also die Spalten als Attribute dargestellt sind. Hierbei sei angemerkt, daß Tabellennamen, die nicht "XML-kompatibel" sind umbenannt werden. Mit der Vergabe eines Aliasnamens in der Abfrage kann man das aber umgehen.
Spalten, die NULL Werte enthalten werden nicht ausgegeben.
Binärdaten werden als XPATH Pfad auf das Datenbankobjekt geliefert.
Sie werden sichern schon bemerkt haben, daß die Einstellung AUTO in FOR XML AUTO sozusagen default-mäßig Ihre Daten ausgibt.
Weiter Einstellmöglichkeiten sind:
FOR XML RAW
Das führt dazu, daß die Abfrage pro Resultset in genau ein Element geschrieben wird.
FOR XML EXPLICIT
Dieser Modus wandelt das Resultset in ein gültiges XML Dokument um. Allerdings muß man bei Benutzung dieser Sntyx etwas aufpassen:
Die erste in der SELECT-Klausel angegebene Spalte muss eine benannte (Tag) Tagnummer sein. Die Tag-Spalte speichert die Tagnummer des aktuellen Elements. Tag ist vom Datentyp integer.
Die zweite angegebene Spalte muss eine benannte (Parent) Tagnummer des übergeordneten Elements sein. Die Parent-Spalte speichert die Tagnummer des übergeordneten Elements. Tag ist vom Datentyp integer.
FOR XML AUTO,ELEMENTS
Alle Spalten werden als untergeordnete Elemente anstatt als Attribute zurückgegeben.
FOR XML AUTO,XMLDATA
liefert ein Resultset, in dem bereits ein XDR Schema eingebettet ist.
OPENXML
Falls sie in Abfragen weitere unterabfragen starten wollen, benutzen Sie die OPENXML Anweisung.
Nun haben wir das Rüstzeug zusammen, um im nächsten Teil das Ergebnis als Website auszugeben.