Friday, 10 November 2017

Sys Xmltype Storage Binary Options


Die Oracle-Dokumentation behauptet, dass sie XMLType kompakter als BINARY XML speichert als als CLOB. Aber wie ich heraus finde, wie viel Speicherplatz durch die binäre XML So genommen wird, vsize scheint die Größe einer Art Zeiger oder LOB-Locator zu sein, und getclobval entpackt die binäre XML in Text. Aber was ist mit der Speichergröße des binären XML selbst Bitte helfen, ist die Tischgröße 340GB, so ist es lohnt sich in Speicheroptionen. Ja, ein Segment hat nichts mit einer Zeile als solche zu tun. Ein Segment ist entweder eine Tabelle, eine Tabellenpartition, ein Index, ein LOB. Das Wichtigste ist, um mehr als 4k in ihm zu speichern, so dass Ihr lob gewonnen39t gespeichert werden quotin linequot, die in der eigentlichen Datenbank-Block der Zeile selbst bedeutet, sondern wird in einem quotout linequot LOB-Segment gespeichert. Ndash gvenzl Jul 22 14 um 13:00 rep issue, nicht erlaubt, Kommentare, die Sie zwischen den Fragen sagen wollte, wie ich verstanden. Die einzige Ähnlichkeit ist Speicherplatz Problem, dachte, es wäre hilfreich für die Vermutung Schätzung. Haben Sie nicht erwähnt, welche Art von Daten werden Sie als bXML speichern. Entpackt die binäre XML in Text Wenn reine XML dann hängt davon ab, welchen Komprimierer Sie verwenden werden. Normalerweise wird lzmagzip für die binäre Komprimierung verwendet. Vielleicht schreibe ich über allzu offensichtliche Dinge, aber das ist alles, was ich weiß239 XMLTYPE XMLType ist ein systemdefinierter undurchsichtiger Typ für die Behandlung von XML-Daten. Es als vordefinierte Member-Funktionen auf sie zu extrahieren XML-Knoten und Fragmente. Sie können Spalten von XMLType erstellen und XML-Dokumente darin einfügen. Sie können auch XML-Dokumente als XMLType-Instanzen dynamisch mit den SYSXMLGEN - und SYSXMLAGG-SQL-Funktionen erzeugen. Dieses Kapitel enthält die folgenden Themen: Zusammenfassung von XMLType-Unterprogrammen Tabelle 239-1 fasst Funktionen und Prozeduren des XMLType zusammen. Tabelle 239-1 XMLTYPE-Unterprogramme Erstellt ein non-schema-basiertes XML aus der input-schema-basierten Instanz. Erstellt eine Schema-basierte XMLType-Instanz aus der nicht-schema-basierten Instanz mithilfe der input-Schema-URL. Statische Funktion zum Erstellen und Zurückgeben einer XMLType-Instanz. Nimmt eine XMLType-Instanz und ein XPath-Objekt auf und gibt 1 oder 0 zurück, das angibt, ob die Anwendung von XPath einen nicht leeren Satz von Knoten zurückgibt. Nimmt eine XMLType-Instanz und einen XPath. Wendet den XPath-Ausdruck an und gibt die Ergebnisse als XMLType zurück .4 Verwenden von XMLType In diesem Kapitel wird beschrieben, wie Sie den XMLType-Datentyp verwenden, XMLType-Tabellen und - Spalten erstellen und bearbeiten sowie diese abfragen. Es enthält die folgenden Abschnitte: Anmerkung: Nicht-schema-basiert: XMLType-Tabellen und - Spalten, die in diesem Kapitel beschrieben werden, basieren nicht auf dem XML-Schema. Sie können jedoch die in diesem Kapitel enthaltenen Techniken und Beispiele verwenden, unabhängig davon, welche Speicheroption Sie für Ihre XMLType-Tabellen und - Spalten wählen. Für weitere Speicherempfehlungen siehe Kapitel 3, Verwenden von Oracle XML DB. XML-Schemas: Anhang B, XML-Schema-Primer und Kapitel 5, Strukturierte Zuordnung von XMLType beschreiben, wie mit XML-Schema-basierten XMLType-Tabellen und - Spalten gearbeitet wird. Was ist XMLType Oracle9 i Release 1 (9.0.1) eingeführt einen neuen Datentyp, XMLType. Um die native Behandlung von XML-Daten in der Datenbank zu erleichtern. Das folgende fasst XMLType zusammen: XMLType kann in PL / SQL gespeicherte Prozeduren als Parameter, Rückgabewerte und Variablen verwendet werden. XMLType kann ein XML-Dokument als Instanz (von XMLType) in SQL darstellen. XMLType verfügt über integrierte Elementfunktionen, die auf XML-Inhalt basieren. Beispielsweise können Sie XMLType-Funktionen verwenden, um XML-Daten, die in der Oracle9-Datenbank gespeichert sind, zu erstellen, zu extrahieren und zu indizieren. Die Funktionalität ist auch über eine Reihe von Application Program Interfaces (APIs) in PL / SQL und Java verfügbar. Mit XMLType und diesen Fähigkeiten können SQL-Entwickler die Leistung der relationalen Datenbank nutzen, während sie im Kontext von XML arbeiten. Ebenso können XML-Entwickler die Leistung von XML-Standards nutzen, während sie im Kontext einer relationalen Datenbank arbeiten. XMLType-Datentyp kann als Datentyp von Spalten in Tabellen und Views verwendet werden. Variablen von XMLType können in PL / SQL gespeicherte Prozeduren als Parameter, Rückgabewerte usw. verwendet werden. Sie können auch XMLType in SQL, PL / SQL und Java (über JDBC) verwenden. In Oracle9 i Release 1 (9.0.1) wurde XMLType nur im Server in SQL, PL / SQL und Java unterstützt. In Oracle9 i Release 2 (9.2) wird XMLType auch auf der Client-Seite über SQL, Java und Protokolle wie FTP und HTTP / WebDav unterstützt. Eine Reihe von nützlichen Funktionen, die auf XML-Inhalt arbeiten, werden zur Verfügung gestellt. Viele davon werden sowohl als SQL - als auch als Member-Funktionen von XMLType bereitgestellt. Die Funktion extract () extrahiert beispielsweise einen bestimmten Knoten aus einer XMLType-Instanz. Sie können XMLType in SQL-Abfragen genauso verwenden wie alle anderen benutzerdefinierten Datentypen im System. Vorteile des XMLType-Datentyps und der API Der XMLType-Datentyp und die API bieten wesentliche Vorteile. Es ermöglicht SQL-Operationen auf XML-Inhalt sowie XML-Operationen auf SQL-Inhalt: Vielseitige API. XMLType verfügt über eine vielseitige API für die Anwendungsentwicklung, da es integrierte Funktionen, Indizierungsunterstützung, Navigation und so weiter enthält. XMLType und SQL. Sie können XMLType in SQL-Anweisungen in Kombination mit anderen Spalten und Datentypen verwenden. Beispielsweise können Sie XMLType-Spalten abfragen und das Ergebnis der Extraktion mit einer relationalen Spalte verknüpfen, und dann kann Oracle einen optimalen Weg zur Ausführung dieser Abfragen bestimmen. Optimierte Auswertung mit XMLType. XMLType ist so optimiert, dass die XML-Daten nicht in eine Baumstruktur exportiert werden, wenn dies nicht erforderlich ist. Deshalb, wenn SQL XMLType-Instanzen in Abfragen auswählt, wird nur ein serialisiertes Formular über Funktionsgrenzen ausgetauscht. Diese werden nur dann in das Baumformat explodiert, wenn Operationen wie extract () und e xistsNode () ausgeführt werden. Die interne Struktur von XMLType ist ebenfalls eine optimierte DOM-ähnliche Baumstruktur. Indizierung. Der Oracle Text-Index wurde erweitert, um XMLType-Spalten zu unterstützen. Sie können auch funktionsbasierte Indizes für die Funktionen existsNode () und extract () erstellen, um die Abfrageauswertung zu beschleunigen. Verwenden von XMLType Verwenden Sie XMLType, wenn Sie Folgendes ausführen müssen: SQL-Abfragen auf einem Teil oder dem gesamten XML-Dokument: Die Funktionen existsNode () und extract () stellen die erforderlichen SQL-Abfragefunktionen über XML-Dokumente bereit. Starke Typisierung innerhalb von SQL-Anweisungen und PL / SQL-Funktionen: Starke Typisierung bedeutet, dass Sie sicherstellen, dass die übergebenen Werte XML-Werte und keine beliebige Textzeichenfolge sind. XPath-Funktionalität, die von extract () und existsNode () - Funktionen zur Verfügung gestellt wird: Beachten Sie, dass XMLType den integrierten C XML-Parser und - Prozessor verwendet und somit eine bessere Leistung und Skalierbarkeit bietet, wenn er innerhalb des Servers verwendet wird. Indexierung auf XPath-Suchvorgängen auf Dokumenten: XMLType verfügt über Elementfunktionen, mit denen Sie funktionsbasierte Indizes erstellen können, um Suchvorgänge zu optimieren. So schützen Sie Anwendungen von Speichermodellen. Durch die Verwendung von XMLType anstelle von CLOBs oder relationalen Speicherprogrammen können Anwendungen nach und nach auf verschiedene Speicheralternativen zugreifen, ohne eine der Abfrage - oder DML-Anweisungen in der Anwendung zu beeinträchtigen. Um für zukünftige Optimierungen vorzubereiten. Neue XML-Funktionalität unterstützt XMLType. Da Oracle9 i-Datenbank nativ bewusst ist, dass XMLType XML-Daten speichern kann, können bessere Optimierungen und Indexierungstechniken durchgeführt werden. Durch das Schreiben von Anwendungen für die Verwendung von XMLType. Können diese Optimierungen und Verbesserungen leicht erreicht und in zukünftigen Versionen bewahrt werden, ohne dass Sie Anwendungen neu schreiben müssen. Speichern von XMLType-Daten in Oracle XML DB XMLType-Daten können auf zwei Arten oder in Kombinationen gespeichert werden: In Large Objects (LOBs). Der LOB-Speicher behält die Originalgenauigkeit für das ursprüngliche XML (Whitespaces und alle) bei. Hier werden die XML-Dokumente als ganze Dokumente wie Dateien gespeichert. In dieser Version bietet XMLType für Nicht-Schemaspeicher eine CLOB-Speicheroption. In zukünftigen Versionen kann Oracle andere Speicheroptionen wie BLOBs, NCLOBS und so weiter bereitstellen. Sie können auch einen CLOB-basierten Speicher für XML-Schemaspeicher erstellen. Wenn Sie eine XMLType-Spalte ohne XML-Schema-Spezifikation erstellen, wird eine versteckte CLOB-Spalte automatisch erstellt, um die XML-Daten zu speichern. Die XMLType-Spalte selbst wird zu einer virtuellen Spalte über diese versteckte CLOB-Spalte. Es ist nicht möglich, direkt auf die CLOB-Spalte zuzugreifen, Sie können jedoch die Speichereigenschaften für die Spalte mit der XMLType-Speicherklausel festlegen. Im Strukturierten Speicher (in Tabellen und Ansichten). Structured Storage unterhält DOM (Document Object Model) Treue. Hier werden die XML-Dokumente in objektrelationale Tabellen oder Views aufgelöst (zerlegt). XMLType erreicht die DOM-Treue durch die Aufrechterhaltung von Informationen, die SQL - oder Java-Objekte normalerweise nicht bereitstellen, wie zum Beispiel: Reihenfolge der untergeordneten Elemente und Attribute. Unterscheidung zwischen Elementen und Attributen. Unstrukturierter Inhalt, der im Schema deklariert wurde. Zum Beispiel contentmixed oder ltanygt-Deklarationen. Nicht deklarierte Daten in Instanzdokumenten wie Verarbeitungsanweisungen, Kommentaren und Namespacedeklarationen. Unterstützung für grundlegende XML-Datentypen, die in SQL nicht verfügbar sind (Boolean, QName usw.). Unterstützung von XML-Constraints (Facetten), die nicht direkt von SQL unterstützt werden, wie z. B. Aufzählungslisten. Native XMLType-Instanzen enthalten versteckte Spalten, die diese zusätzlichen Informationen speichern, die nicht ganz in das SQL-Objektmodell passen. Auf diese Informationen kann über APIs in SQL oder Java zugegriffen werden, indem Elementfunktionen wie extractNode () verwendet werden. Das Ändern von XMLType-Speicher aus strukturiertem Speicher in LOB oder umgekehrt ist mithilfe der Datenbank IMPORT und EXPORT möglich. Ihr Anwendungscode muss sich nicht ändern. Sie können dann XML-Speicheroptionen ändern, wenn Sie Ihre Anwendung abstimmen, da jede Speicheroption ihre eigenen Vorteile hat. Vor - und Nachteile von XML-Speicheroptionen in Oracle XML DB Tabelle 4-1 fasst einige Vorteile und Nachteile zusammen, die bei der Auswahl der Speicheroption für Oracle XML DB berücksichtigt werden sollten. Tabelle 4-1 XML-Speicheroptionen in Oracle XML-DB Beispiel 4-12 Angeben von Einschränkungen für XMLType Spalten verhindern Einfügungen wie: Beispiel 4-13 Verwenden von ALTER TABLE zum Ändern von NOT NULL von XMLType-Spalten Sie können auch die ALTER TABLE-Anweisung verwenden, um NOT zu ändern NULL-Informationen einer XMLType-Spalte in der gleichen Weise wie für andere Spaltentypen: Sie können auch Check-Constraints für XMLType-Spalten definieren. Andere Standardwerte werden auf diesem Datentyp nicht unterstützt. Manipulieren von XML-Daten in XMLType-Spalten / Tabellen Da XMLType ein benutzerdefinierter Datentyp mit darauf definierten Funktionen ist, können Sie Funktionen auf XMLType aufrufen und Ergebnisse erhalten. Sie können XMLType verwenden, wo immer Sie einen benutzerdefinierten Typ verwenden, einschließlich Tabellenspalten, Sichten, Trigger-Leerzeichen und Typdefinitionen. Sie können in XMLType-Spalten und Tabellen die folgenden Manipulationen oder Datenmanipulationssprachen (DML) auf XML-Daten ausführen: XML-Daten in XMLType einfügen Spalten / Tabellen Sie können Daten in Spalten von XMLType auf folgende Arten einfügen: XMLType-Spalten können nur gut geformt speichern XML-Dokumente. Fragmente und andere nicht-wohlgeformte XML können nicht in XMLType-Spalten gespeichert werden. Verwenden von INSERT-Anweisungen So verwenden Sie die INSERT-Anweisung zum Einfügen von XML-Daten in XMLType. Müssen Sie zuerst XML-Dokumente erstellen, um den Insert mit auszuführen. Sie können die einfügbaren XML-Dokumente wie folgt erstellen: Verwenden von XMLType-Konstruktoren. Dies kann in SQL, PL / SQL und Java erfolgen. Durch die Verwendung von SQL-Funktionen wie XMLElement (). XMLConcat (). Und XMLAGG (). Dies kann in SQL, PL / SQL und Java erfolgen. Beispiel 4-14 Einfügen von XML-Daten mit createXML () mit CLOB Die folgenden Beispiele verwenden INSERT. SELECT und dem XMLType-Konstruktor zuerst ein XML-Dokument erstellen und dann das Dokument in die Spalten von XMLType einfügen. Betrachten Sie Tabelle poclobtab, die eine CLOB, poClob enthält. Zum Speichern eines XML-Dokuments: Beispiel 4-15 Einfügen von XML-Daten mithilfe einer XMLType-Instanz Sie können ein XML-Dokument für die Bestellung in die Tabelle poxmltab einfügen. Indem Sie einfach eine XML-Instanz aus den CLOB-Daten erstellen, die im anderen Poclobtab gespeichert sind: Sie können auch den CLOB-Wert aus jedem beliebigen Ausdruck erhalten, einschließlich Funktionen, die temporäre CLOBs erstellen oder CLOBs aus anderen Tabellen oder Views auswählen können. Beispiel 4-16 Einfügen von XML-Daten mit XMLType () mit String Dieses Beispiel fügt eine Bestellung in Tabelle potab mit dem XMLType-Konstruktor ein: Beispiel 4-17 Einfügen von XML-Daten mithilfe von XMLElement () Dieses Beispiel fügt eine Bestellung in die Tabelle poxmltab ein, indem Sie es generieren Mithilfe der XMLElement () - SQL-Funktion. Angenommen, die Bestellung ist eine Objektansicht, die ein Bestellobjekt enthält. Die vollständige Definition der Bestellsicht ist in DBMSXMLGEN: Erzeugen einer Bestellung aus der Datenbank im XML-Format enthalten. XMLElement () erzeugt aus dem Bestellobjekt einen XMLType, der dann in die Tabelle poxmltab eingefügt wird. Sie können auch SYSXMLGEN () in der INSERT-Anweisung verwenden. Auswählen und Abfragen von XML-Daten Sie können XML-Daten aus XMLType-Spalten auf folgende Weise abfragen: Durch Auswählen von XMLType-Spalten über SQL, PL / SQL oder Java Durch Abfragen von XMLType-Spalten direkt und mit extract () und existsNode () Durch die Verwendung von Oracle Text-Operatoren , Um den XML-Inhalt abzufragen. Siehe Indexieren von XMLType-Spalten und Kapitel 7, Suchen von XML-Daten mit Oracle-Text. SQL-Funktionen zum Manipulieren von XML-Daten SQL-Funktionen wie existsNode (). Extrakt(). XMLTransform (). Und updateXML () auf XML-Daten innerhalb von SQL. Der XMLType-Datentyp unterstützt die meisten dieser Funktionen als Member-Funktionen. Sie können entweder den egoistischen Stil des Aufrufs oder die SQL-Funktionen verwenden. Auswählen von XML-Daten Sie können XMLType-Daten mit PL / SQL oder Java auswählen. Sie können auch die getClobVal (), getStringVal (). Oder getNumberVal () - Funktionen, um XML als CLOB, VARCHAR oder NUMBER abzurufen. Beispiel 4-18 Auswählen von XMLType-Spalten mithilfe von getClobVal () Dieses Beispiel zeigt, wie Sie eine XMLType-Spalte mit SQLPlus auswählen: XML-Daten abfragen Sie können XMLType-Daten abfragen und Teile davon mit den Funktionen existsNode () und extract () extrahieren. Beide Funktionen verwenden eine Teilmenge der W3C XPath-Empfehlung, um das Dokument zu navigieren. Verwenden von XPath-Ausdrücken für das Suchen von XML-Dokumenten XPath ist eine W3C-Empfehlung für das Navigieren von XML-Dokumenten. XPath modelliert das XML-Dokument als Baum von Knoten. Es bietet eine reiche Reihe von Operationen, um den Baum zu gehen und Prädikate und Knoten-Test-Funktionen anzuwenden. Das Anwenden eines XPath-Ausdrucks auf ein XML-Dokument kann zu einem Satz von Knoten führen. Beispielsweise wählt / PO / PONO alle PONO-Child-Elemente unter dem PO-Root-Element des Dokuments aus. Tabelle 4-2 listet einige gängige Konstrukte auf, die in XPath verwendet werden. Tabelle 4-2 Einige allgemeine XPath-Konstrukte Abfragen von XML-Daten mithilfe von XMLType-Memberfunktionen Sie können XMLType-Daten über PL / SQL, OCI oder Java auswählen. Sie können auch die getClobVal () verwenden. GetStringVal (). Oder getNumberVal () - Funktionen, um das XML als CLOB, VARCHAR oder eine Zahl abzurufen. Beispiel 4-19 Abrufen eines XML-Dokuments als CLOB Verwenden von getClobVal () und existsNode () Dieses Beispiel zeigt, wie eine XMLType-Spalte mit getClobVal () und existsNode () ausgewählt wird: existsNode Funktion Die Syntax für die existsNode () - Funktion ist in beschrieben Abbildung 4-2 und auch wie folgt: Abbildung 4-2 existsNode () Syntax Textbeschreibung der Abbildung existsnode. gif existsNode () - Funktion auf XMLType überprüft, ob die angegebene XPath-Auswertung mindestens ein einzelnes XML-Element oder einen Textknoten enthält. Wenn ja, gibt es den numerischen Wert 1 zurück, andernfalls gibt er eine 0 zurück. Der Namespace kann verwendet werden, um die Zuordnung von Präfix (es) zu identifizieren, die im XPathstring in dem entsprechenden Namespace (n) angegeben ist. Beispiel 4-20 Verwendung von existsNode () auf XMLType Beispiel: Ein XPath-Ausdruck wie / PO / PNAME ergibt einen einzigen Knoten. Daher gibt existsNode () 1 für diesen XPath zurück. Dies ist das gleiche mit / PO / PNAME / text (). Was zu einem einzigen Textknoten führt. Ein XPath-Ausdruck wie / PO / POTYPE gibt keine Knoten zurück. Daher würde ein existsNode () auf diesen den Wert 0 zurückgeben. Zusammenfassend kann existsNode () - Funktion in Abfragen verwendet werden und um funktionsbasierte Indizes zu erstellen, um die Auswertung von Abfragen zu beschleunigen. Beispiel 4-21 Verwendung von existsNode () zum Suchen eines Knotens Das folgende Beispiel testet auf die Existenz des / Warehouse / Dock-Knotens in der Warehouse-Spalte XML-Pfad der Beispieltabelle oe. warehouses: Indizes zur Auswertung verwenden existsNode () Sie können erstellen Funktionsbasierte Indizes unter Verwendung von existsNode (), um die Ausführung zu beschleunigen. Sie können auch einen CTXXPATH-Index erstellen, um die beliebige XPath-Suche zu beschleunigen. Extract () Funktion Die extract () funktion ist ähnlich der e xistsNode () Funktion. Es wendet eine VARCHAR2 XPath-Zeichenfolge mit einem optionalen Namespace-Parameter an und gibt eine XMLType-Instanz zurück, die ein XML-Fragment enthält. Die Syntax ist in Abbildung 4-3 und folgendermaßen beschrieben: Abbildung 4-3 extract () Syntax Textbeschreibung der Abbildung extractxml. gif extract () auf XMLType extrahiert den Knoten oder einen Satz von Knoten aus dem durch den XPath-Ausdruck identifizierten Dokument . Die extrahierten Knoten können Elemente, Attribute oder Textknoten sein. Beim Extrahieren werden alle Textknoten zu einem einzigen Textknotenwert zusammengefasst. Namespace kann verwendet werden, um Namespace-Informationen für Präfixe in der XPath-Zeichenfolge zu liefern. Der XMLType, der sich aus der Anwendung von XPath durch extract () ergibt, muss nicht ein wohlgeformtes XML-Dokument sein, sondern kann in manchen Fällen einen Satz von Knoten oder einfache skalare Daten enthalten. Sie können die getStringVal () - oder getNumberVal () - Methoden für XMLType verwenden, um diese skalaren Daten zu extrahieren. Beispielsweise identifiziert der XPath-Ausdruck / PO / PNAME das PNAME-Element in dem zuvor gezeigten XML-Dokument. Der Ausdruck / PO / PNAME / text (). Auf der anderen Seite, bezieht sich auf den Textknoten des PNAME-Elements. Letzteres gilt noch als XMLType. Mit anderen Worten, extrahieren (poDoc, / PO / PNAME / text ()) liefert immer noch eine XML-Instanz, obwohl die Instanz tatsächlich nur Text enthalten kann. Sie können getStringVal () verwenden, um den Textwert als VARCHAR2-Ergebnis zu erhalten. Verwenden Sie die Funktion text (), um Textknoten in Elementen zu identifizieren, bevor Sie getStringVal () oder getNumberVal () verwenden, um sie in SQL-Daten zu konvertieren. Der Text () - Knoten würde nicht ein XML-Fragment erzeugen. Beispiel: XPath-Ausdrücke: / PO / PNAME identifiziert das Fragment ltPNAMEgtPO1lt / PNAMEgt / PO / PNAME / text () identifiziert den Textwert PO1 Sie können den Indexmechanismus verwenden, um einzelne Elemente bei wiederholten Elementen in einem XML-Dokument zu identifizieren. Wenn Sie beispielsweise ein XML-Dokument wie: // PONO1 haben, um das erste PONO-Element (mit dem Wert 100) zu identifizieren. // PONO2, um das zweite PONO-Element (mit dem Wert 200) zu identifizieren. Das Ergebnis von extract () ist immer ein XMLType. Wenn die Anwendung von XPath eine leere Menge erzeugt, gibt extract () einen NULL-Wert zurück. Daher kann extract () - Funktion in einer Reihe von Möglichkeiten verwendet werden, einschließlich der folgenden: Extrahieren von numerischen Werten, auf denen funktionsbasierte Indizes erstellt werden können, um die Verarbeitung zu beschleunigen Extrahieren von in der FROM-Klausel von SQL-Anweisungen zu verwendenden Auszugsausdrücken Extrahieren Fragmente, die später aggregiert werden, um unterschiedliche Dokumente zu erzeugen Beispiel 4-22 Verwenden von extract () zum Extrahieren des Wertes eines Knotens Dieses Beispiel extrahiert den Wert des Knotens / Lager / Docks. Der Spalte, der Warehousespec in der Tabelle oe. warehouses: extractValue () Die Funktion extractValue () nimmt als Argumente eine XMLType-Instanz und einen XPath-Ausdruck. Es gibt einen Skalarwert zurück, der dem Ergebnis der XPath-Auswertung der XMLType-Instanz entspricht. ExtractValue () Syntax ist auch in Abbildung 4-4 ​​beschrieben. XML-Schema-basierte Dokumente. Bei Dokumenten, die auf einem XML-Schema basieren, kann, wenn Oracle9 i auf den Typ des Rückgabewertes schließen kann, ein Skalarwert des entsprechenden Typs zurückgegeben werden. Andernfalls ist das Ergebnis vom Typ VARCHAR2. Nicht-schematische Dokumente. Bei Dokumenten, die nicht auf XML-Schemata basieren, ist der Rückgabetyp immer VARCHAR2. ExtractValue () versucht, den richtigen Rückgabetyp aus dem XML-Schema des Dokuments zu entnehmen. Wenn der XMLType nicht Schema-basiert ist oder der richtige Rückgabetyp nicht ermittelt werden kann, gibt Oracle XML DB einen VARCHAR2 zurück. Abbildung 4-4 ​​extractValue () Syntax Textbeschreibung der Abbildung extractvalue. gif Eine Shortcut-Funktion extractValue () erlaubt es Ihnen, den gewünschten Wert leichter zu extrahieren als bei Verwendung der entsprechenden Extraktfunktion. Es ist eine einfache Bedienung und Shortcut-Funktion. Anstatt: Sie können extract (), getStringVal () oder extract () getnumberval () mit extractValue () wie folgt ersetzen: Mit extractValue () können Sie den Text () verlassen. Aber NUR, wenn der Knoten, auf den der Pfadteil zeigt, nur ein Kind hat und dieses Kind ein Textknoten ist. Andernfalls wird ein Fehler ausgelöst. ExtractValue () Syntax ist die gleiche wie extract (). ExtractValue () Eigenschaften extractValue () hat die folgenden Eigenschaften: Es gibt immer nur skalaren Inhalt, wie z. B. NUMBER. VARCHAR2, und so weiter. XML-Knoten oder gemischte Inhalte können nicht zurückgegeben werden. Es wirft einen Fehler bei der Kompilierung oder Laufzeit, wenn es XML-Knoten als Ergebnis bekommt. Es gibt immer VARCHAR2 standardmäßig zurück. Wenn der Knotenwert größer als 4K ist, würde ein Laufzeitfehler auftreten. In der Gegenwart von XML-Schema-Informationen, zur Kompilierung Zeit, extractValue () kann automatisch die entsprechenden Datentyp auf der Grundlage der XML-Schema-Informationen, wenn es so zum Zeitpunkt der Kompilierung der Abfrage zu erkennen. Wenn beispielsweise die XML-Schemainformationen für den Pfad / PO / POID anzeigen, dass es sich um einen numerischen Wert handelt, gibt extractValue () eine ZAHL zurück. Wenn der XPath einen Knoten identifiziert, erhält er automatisch den skalaren Inhalt von seinem Textkind. Der Knoten muss genau ein Text-Kind haben. Beispiel: extrahiert das Textkind von PNAME. Dies ist äquivalent zu: Beispiel 4-23 Extrahieren des Skalarwerts eines XML-Fragments mit extractValue () Im folgenden Beispiel werden als Argumente dieselben Argumente verwendet wie im Beispiel für die Funktion extract (). Anstatt ein XML-Fragment zurückzugeben, gibt es als extract () den skalaren Wert des XML-Fragments zurück: ExtractValue () hat das Text-Child des Docks-Elements automatisch extrahiert und diesen Wert zurückgegeben. Sie können dies auch mit extract () wie folgt schreiben: Weitere SQL-Beispiele Das Query-XML Die folgenden SQL-Beispiele veranschaulichen, wie Sie XML abfragen können. Beispiel 4-24 XMLType abfragen Verwenden von extract () und existsNode () Nehmen Sie die poxmltab-Tabelle an, die die Bestell - und die Bestell-XML-Spalte enthält, und gehen davon aus, dass die folgenden Werte in die Tabelle eingefügt werden Werte für die Bestellnummern mit extract (): Hier extrahiert () den Inhalt von Tag, Bestellnummer, PONO. ExistsNode () findet Knoten, in denen PONO als Kind von PO existiert. Hier wird Text () verwendet, um die Textknoten zurückzugeben. GetNumberVal () - Funktion kann nur Textwerte in numerische Größen umwandeln

No comments:

Post a Comment