XML Extender Verwaltung und Programmierung

Ein vollständiges Dokument abrufen

Task-Übersicht:

  1. Stellen Sie sicher, daß Sie das XML-Dokument in einer XML-Tabelle gespeichert haben, und stellen Sie fest, welche Daten abgerufen werden sollen.
  2. Wählen Sie eine Methode zum Abrufen der Daten aus der DB2-Tabelle aus (Umsetzungsfunktionen oder UDFs).
  3. Bei Verwendung der überladenen UDF Content() muß ermittelt werden, welcher Datentyp den abzurufenden Daten zugeordnet ist und welcher Datentyp exportiert werden soll.
  4. Geben Sie eine SQL-Abfrage an, die die XML-Tabelle und -Spalte angibt, aus der das XML-Dokument abgerufen werden soll.

Der XML Extender bietet zwei Methoden zum Abrufen von Daten:

Standardumsetzungsfunktion verwenden
Verwenden Sie die mit DB2 bereitgestellte Standardumsetzungsfunktion für UDTs, um einen XML-UDT in einen SQL-Basistyp umzusetzen und anschließend damit zu arbeiten. Sie können die vom XML Extender bereitgestellten Umsetzungsfunktionen in Ihren SELECT-Anweisungen zum Abrufen von Daten verwenden. Tabelle 12 zeigt die bereitgestellten Umsetzungsfunktionen:


Tabelle 12. Die XML Extender-Standardumsetzungsfunktionen
In SELECT-Klausel verwendete Umsetzung Rückgabetyp Beschreibung
varchar(XMLVARCHAR) VARCHAR XML-Dokument in VARCHAR
clob(XMLCLOB) CLOB XML-Dokument in CLOB
varchar(XMLFile) VARCHAR XML-Dateiname in VARCHAR
Beispiel: Im folgenden Beispiel werden XMLVARCHAR-Daten abgerufen und im Speicher als Datentyp VARCHAR abgelegt:

EXEC SQL SELECT db2xml.varchar(order) from sales_tab

Überladene UDF Content() verwenden
Verwenden Sie die UDF Content() zum Abrufen des Dokumentinhalts aus dem Zusatzspeicher in den Hauptspeicher, oder exportieren Sie das Dokument aus dem internen Speicher in eine externe Datei auf dem DB2-Server.

Wenn Sie beispielsweise Ihr XML-Dokument als XMLFILE gespeichert haben und im Hauptspeicher damit arbeiten wollen, können Sie die UDF Content() verwenden, die den Datentyp XMLFILE als Eingabe verwenden und CLOB zurückgeben kann.

Die UDF Content() führt je nach dem angegebenen Datentyp zwei verschiedene Abruffunktionen aus:

Ruft ein Dokument aus dem Zusatzspeicher ab und legt es im Hauptspeicher ab
Sie können mit Content() das XML-Dokument in einen Speicherpuffer abrufen oder in eine CLOB-Zeigereinheit, wenn das Dokument als externe Datei gespeichert ist. Verwenden Sie die folgende Funktionssyntax, wobei xmlobj die abgefragte XML-Spalte ist:

XMLFILE to CLOB: Ruft Daten aus einer Datei ab und exportiert sie in eine CLOB-Zeigereinheit.

Content(xmlobj XMLFile)

Ruft ein Dokument aus dem internen Speicher ab und exportiert es in eine externe Datei
Sie können mit Content() auch ein in DB2 als Datentyp XMLCLOB gespeichertes XML-Dokument abrufen und es in eine Datei im Dateisystem des Datenbank-Servers exportieren. Der Name der Datei wird als Datentyp VARCHAR zurückgegeben. Verwenden Sie die folgende Syntax, wobei xmlobj die abgefragte XML-Spalte und Dateiname die externe Datei ist. XML-Typ kann den Datentyp XMLVARCHAR oder XMLCLOB haben.

XML-Typ to external file: Ruft den als Datentyp XML gespeicherten XML-Inhalt ab und exportiert ihn in eine externe Datei.

Content(xmlobj
XML-Typ, dateiname varchar(512))

Hierbei gilt folgendes:

xmlobj
Der Name der XML-Spalte, aus der der XML-Inhalt abgerufen werden soll; xmlobj kann den Datentyp XMLVARCHAR oder XMLCLOB haben.

dateiname
Der Name der Datei, in der die XML-Daten gespeichert werden sollen.

In dem folgenden Beispiel verdeutlicht ein kleines C-Programmsegment mit eingebettetem SQL-Code, wie ein XML-Dokument aus einer Datei in den Hauptspeicher abgerufen wird. Bei diesem Beispiel wird davon ausgegangen, daß die Spalte BOOK den Datentyp XMLFILE hat.

EXEC SQL BEGIN DECLARE SECTION;
              SQL TYPE IS CLOB_LOCATOR xml_buff;
          EXEC SQL END DECLARE SECTION;
          EXEC SQL CONNECT TO SALES_DB
          EXEC SQL DECLARE c1 CURSOR FOR
              SELECT Content(order) from sales_tab
                        EXEC SQL OPEN c1;
          do {
             EXEC SQL FETCH c1 INTO :xml_buff;
             if (SQLCODE != 0) {
                break;
                }
             else {
               /* beliebige Aktion mit dem XML-Dok im Puffer ausführen */ } }
          EXEC SQL CLOSE c1;
          EXEC SQL CONNECT RESET;


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]