Sie können den Inhalt eines Elements oder eines Attributwerts aus einem oder mehreren XML-Dokumenten (Suche in einem einzelnen Dokument oder in einer Dokumentgruppe) abrufen (extrahieren). Der XML Extender bietet benutzerdefinierte Funktionen zum Extrahieren, die Sie in der SELECT-Klausel für jeden SQL-Datentyp angeben können.
Das Abrufen von Inhalt und Werten der Elemente und Attribute ist bei der Entwicklung von Anwendungen sehr hilfreich, weil Sie auf XML-Daten als relationale Daten zugreifen können. Sie könnten beispielsweise 1000 XML-Dokumente haben, die in der Spalte ORDER in der Tabelle SALES_TAB gespeichert sind. Sie können die Namen aller Kunden, die bereits Artikel bestellt haben, mit der folgenden SQL-Anweisung abrufen; die UDF zum Extrahieren ist in der SELECT-Klausel zum Abrufen dieser Informationen enthalten:
SELECT extractVarchar(Order, '/Order/Customer/Name') from sales_order_view WHERE price > 2500.00
In diesem Beispiel ruft die Extraktions-UDF das Element <customer> aus der Spalte ORDER als Datentyp VARCHAR ab. Der Standardpfad lautet /Order/Customer/Name (die Syntax zum Standortpfad ist im Abschnitt Standortpfad beschrieben). Darüber hinaus wird die Anzahl der zurückgegebenen Werte mit Hilfe einer WHERE-Klausel verringert; diese Klausel gibt an, daß nur der Inhalt der Elemente <customer> abgerufen werden soll, deren Unterelement <ExtendedPrice> einen Wert größer als 2500.00 hat.
So extrahieren Sie Elementinhalte oder Attributwerte: Verwenden Sie die in Tabelle 13 aufgeführten Extraktions-UDFs; verwenden Sie hierbei die folgende Syntax als Tabellen- oder Skalarfunktion:
extractabgerufener_datentyp(xmlobj, pfad)
Hierbei gilt folgendes:
Tabelle 13 zeigt die Extraktionsfunktionen im skalaren und
tabellarischen Format:
Tabelle 13. Die XML Extender-Extraktionsfunktionen
Skalarfunktion | Tabellenfunktion | Zurückgegebener Spaltenname (Tabellenfunktion) | Rückgabetyp |
---|---|---|---|
extractInteger() | extractIntegers() | returnedInteger | INTEGER |
extractSmallint() | extractSmallints() | returnedSmallint | SMALLINT |
extractDouble() | extractDoubles() | returnedDouble | DOUBLE |
extractReal() | extractReals() | returnedReal | REAL |
extractChar() | extractChars() | returnedChar | CHAR |
extractVarchar() | extractVarchars() | returnedVarchar | VARCHAR |
extractCLOB() | extractCLOBs() | returnedCLOB | CLOB |
extractDate() | extractDates() | returnedDate | DATE |
extractTime() | extractTimes() | returnedTime | TIME |
extractTimestamp() | extractTimestamps() | returnedTimestamp | TIMESTAMP |