Veröffentlicht 03. März 2023
Aktualisiert Oktober 2025
Einführung
Willkommen zurück!
In dieser zweiteiligen Serie zeigen wir, wie Sie KeepTool in Kombination mit Oracle XML DB einsetzen.
Im ersten Artikel haben wir eine funktionierende Import-Schnittstelle für HR.EMPLOYEES erstellt.
In diesem zweiten Teil konzentrieren wir uns auf die Export-Schnittstelle – insbesondere auf die Abbildung einer Master/Detail-Beziehung zwischen HR.COUNTRIES (Master) und HR.LOCATIONS (Detail).
Wie zuvor beschränken wir uns auf das Wesentliche, damit Sie die Logik später flexibel erweitern können.
Erstellung der PL/SQL-Types
Wir möchten Daten aus den Tabellen COUNTRIES und LOCATIONS exportieren. Da zwischen beiden Tabellen eine Foreign-Key-Beziehung besteht, soll das XML-Dokument die Detaildaten (LOCATIONS) verschachtelt innerhalb der Masterdaten (COUNTRIES) enthalten.
Auf der Seite Tables in Hora zeigt die Registerkarte Master/Detail ein kleines Diagramm mit den direkten Beziehungen. Wir haben sowohl COUNTRIES als auch LOCATIONS markiert, um zu verdeutlichen, welche Tabellen in diesem Export-Beispiel verwendet werden

Die beiden zu exportierenden Tabellen COUNTRIES (Master) und LOCATIONS (Detail) haben wir mit einem Stern markiert.
Um den verschachtelten XML-Export zu unterstützen, definieren wir sechs PL/SQL-Typen – je drei pro Tabelle, die voneinander abhängen:
Detailtabelle (LOCATIONS)
-
LOCATIONS_XML_ITEM – Objekttyp, dessen Attribute den Spalten der LOCATIONS-Tabelle entsprechen
-
LOCATIONS_XML_LIST – Collection-Typ (TABLE OF LOCATIONS_XML_ITEM)
-
LOCATIONS_XML_ELEM – Objekttyp, der eine LOCATIONS_XML_LIST enthält und als Wrapper dient
Damit können die Master-Typen später auf Detail-Collections verweisen.
Mastertabelle (COUNTRIES)
-
COUNTRIES_XML_ITEM – Objekttyp, dessen Attribute den Spalten der COUNTRIES-Tabelle entsprechen, plus ein Attribut vom Typ LOCATIONS_XML_ELEM zur Aufnahme der Detaildaten
-
COUNTRIES_XML_LIST – Collection-Typ (TABLE OF COUNTRIES_XML_ITEM)
-
COUNTRIES_XML_ELEM – Objekttyp, der eine COUNTRIES_XML_LIST enthält
Nachdem Sie alle sechs Typen erstellt haben, können Sie diese in Hora auf der Seite PL/SQL Types unter dem Reiter All types anzeigen. Dort erscheinen Objekt- und Collection-Typen gemeinsam in einer Liste.

Für jede zu exportierende Tabelle wurden 3 XML Types erzeugt, welche die XML-Export-Struktur definieren
Hora hebt neu erstellte oder geänderte Typen grün hervor. Mit dem Button „Fade Changes“ in der linken oberen Ecke lässt sich die Einfärbung schrittweise zurücksetzen – nach drei Klicks erscheint wieder der Standardhintergrund. Etwaige Warnungen oder Datenbankfehler werden automatisch eingeblendet.
Erstellen / Registrieren des XSD-Schemas
Im ersten Beitrag haben wir das Paket XML_LOGIC erstellt, das das Schema EMPLOYEES.XSD generiert und registriert. Nun erweitern wir das Paket, um zusätzlich das Schema COUNTRIES.XSD für den Export zu verwalten.
Dazu ergänzen wir zwei Prozeduren:

Hora zeigt kürzlich geänderte Objekte mit grünem Hintergrund an, der mit der Zeit bzw. auf Benutzeranforderung verblasst.
Ausführung in SQL:
begin
XML_LOGIC.unregister_all_xsds;
XML_LOGIC.register_all_xsds;
end;
/
Nach der Ausführung sind beide XSDs in der Datenbank registriert. Auf der XML-Seite in Hora sehen Sie nun:

Hora zeigt das erzeugte XSD an
- Auf einem separaten Reiter die Zuordnung zwischen XML-Elementen und PL/SQL-Typen, inklusive der verschachtelten Master/Detail-Struktur

Hora zeigt die Zuordnung von XML Elementen zu PL/SQL Types an
Das neue Schema bildet damit die Hierarchie COUNTRIES → LOCATIONS korrekt ab.
Schnittstellentabelle für den Datenexport
Als Export-Schnittstelle dient die Tabelle XML_COUNTRIES_TRANSFER, aus der externe Systeme die XML-Daten abrufen können.

Datenstruktur zum Speichern des XML-Exports
Wichtige Spalten:
-
ID – Primärschlüssel, automatisch per Trigger / Sequenz gesetzt
-
XML_DATA – CLOB-Spalte mit dem generierten XML-Inhalt
-
Weitere Spalten: Metadaten, Zeitstempel, Statusfelder
Zusätzlich definieren wir die View XML_COUNTRIES_TRANS_DATA_V, die COUNTRIES und LOCATIONS verknüpft und das gewünschte XML-Strukturlayout relational abbildet:

Anlegen einer View, die den hierarchischen XML Export als relationale Struktur anzeigt
Diese View liefert hierarchisch strukturierte Daten, die unser Export-Skript anschließend in XML umwandelt und in die Transfer-Tabelle schreibt. Weitere Informationen zur relational-zu-XML-Konvertierung finden Sie beispielsweise im XMLTABLE-Beispiel bei https://www.oratable.com/xmltable-convert-xml-to-relational-form/ .
Exportlogik in PL/SQL
Im Paket XML_INTERFACE implementieren wir nun eine neue Prozedur für den XML-Export:

PL/SQL Package, das die gesamte Logik des XML-Exports kapselt
Beispielaufruf:
declare
XmlCountriesTransferID XML_COUNTRIES_TRANSFER.ID%TYPE;
begin
XmlCountriesTransferID := XML_INTERFACE.CreateCountriesExport;
end;
Nach dem Einfügen können Sie in Hora die Spalte XML_DATA öffnen und das generierte XML betrachten.

Anzeige des exportierten XMLs in Horas Data Content Browser
Externe Systeme können die Daten anschließend direkt aus XML_COUNTRIES_TRANSFER abfragen:
Fazit
Die XML-Export-Schnittstelle ist nun vollständig funktionsfähig. Sie können das Beispiel hier herunterladen und als Vorlage für eigene Master/Detail-Exports verwenden.
In Praxisprojekten berichten Teams von deutlich höherer Produktivität, wenn sie XML-basierte Schnittstellen mit KeepTool und Oracle XML DB umsetzen.
➡️ KeepTool kostenlos testen
Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.