2009-01-29 5 views
7

Ich möchte eine gespeicherte Prozedur erstellen, die den Namen einer Tabelle und einer row_id übernimmt und sie in eine XML-Zeichenfolge serialisieren kann.Oracle-Zeile in XML serialisieren

Die Tabelle enthält möglicherweise Clobs und Blobs.

Kann ich das in PL/SQL, oder muss ich Java verwenden?

Das Hauptziel für diese ist mit allen Updates, einen Tisch zu haben und löscht auf einigen Tabellen, die X neuesten Versionen zu halten, oder X Tage von Daten (die Tabelle wäre so etwas wie chg_date(default:sysdate) umfasst, chg_type(U or D), chg_xml und wahrscheinlich mit einige Metadaten über den Benutzer).

Mögliche Verwendungen: - Es könnte auch alle Daten behalten und als Protokoll verwendet werden - Die Möglichkeit, die Zeile auf einen früheren Wert zurückgeben. - Die Fähigkeit, EDI in einem bestimmten Format zu tun.

Ich möchte nicht die Flashback-Abfragen von Oracle verwenden, da es keine Garantie für die Datenverfügbarkeit gibt.

Antwort

6

Oracle hat eine Funktion zum Zurückgeben einer Abfrage im XML-Format.

Ersetzen Sie in diesem Beispiel & Tabelle durch Ihren Tabellennamen und & Rowid durch die Rowid. Ich habe es getestet und es scheint mit Clobs und Blobs zu funktionieren. Für Blobs gibt es die Daten in Hex zurück.

SELECT DBMS_XMLGEN.getxmltype ('select * from &table_name where rowid = ''&rowid''') 
    FROM DUAL