EDUCBA Logo

EDUCBA

MENUMENU
  • Explore
    • EDUCBA Pro
    • PRO Bundles
    • Featured Skills
    • New & Trending
    • Fresh Entries
    • Finance
    • Data Science
    • Programming and Dev
    • Excel
    • Marketing
    • HR
    • PDP
    • VFX and Design
    • Project Management
    • Exam Prep
    • All Courses
  • Blog
  • Enterprise
  • Free Courses
  • Log in
  • Sign Up
Home Data Science Data Science Tutorials Oracle Tutorial Oracle XMLTABLE
 

Oracle XMLTABLE

Updated March 4, 2023

Oracle XMLTABLE

 

 

Introduction to Oracle XMLTABLE

Oracle XMLTABLE function is a new function added to Oracle since Oracle 10g along with other function like XQuery to its collection of XML handling APIs. Here, the XQuery will let you construct the XML data as well as relational data and query XML using the XQuery language. But the XMLTABLE function in Oracle is responsible for creating the relational tables and its columns from Oracle XQuery command query results. Generally, the XMLTABLE function will return the content of any XML document or maybe any element present in a relational table format structure. XMLTABLE is a SQL/XML function that is implemented in the FROM clause of a SQL but in combination with a driving table that contains the XML data for translating the XML data to a relational form. Hence, using this Oracle XMLTABLE function one can retrieve several information from the XML data.

Watch our Demo Courses and Videos

Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.

Syntax

The basic syntax for the XMLTABLE function is explained below:

XMLTABLE(‘<XQuery>’ PASSING <xml Table_column >
COLUMNS <New_Table_Column_Name> <Column Type> PATH <XQuery path>)

The XMLTABLE function comprises one row-generating XQuery expression and in the clause COLUMNS, there exists one or more than one column-generating expression.

Before practicing the Oracle XMLTABLE function, we should know first about the XPath, where XPath implements a path expression for selecting nodes as well as a list of nodes from an xml document. Here, is the list of beneficial paths and expression which can be applied for selecting any node or nodelist from an xml document.

Expression                                                                  Description

Nodename                                          Picks all nodes having the name ‘nodename’

/                                                           Chooses from the root node

//                                                         Picks nodes in the document from the present node which equals the choice no matter where they are

.                                                          Picks the present node

..                                                          Picks the parent of the present node

@                                                         Chooses attributes

Table_element                                    Picks all nodes with the name ‘Table_element’

Table_Name/Table_Element             Chooses all table elements that are offspring of table

//Table_Element                                 Picks all table elements no matter where they exist in the document

Also, a list of predicates is stated in square brackets [….] which are applied to discover a particular node or a node that covers a definite value.

Path Expression                                                                      Result

/table_name/table_element[1]                                 Picks the initial table element which is known to be the child of the table element.

/table_name/table_element[last()]                           Picks the last table element which is known to be the child of the table element.

/table_name/table_element[last()-1]                        Picks the last but a single table element which is known to be the child of the table element.

//table_element[@type=’admin’]                              Picks all the table elements which hold an attribute named type having a value of ‘admin’.

How XMLTABLE function works in Oracle?

  • The XMLTABLE operator in Oracle permits a user to fragment the XML data ahead into table rows and project table columns on to it. For this, a Cartesian product is effectually created concerning the data table and the XMLTABLE call that permits the XMLTABLE for splitting an XML document in one row into more than one row present in the final result of execution.
  • The table column will be recognized as the source of data using the PASSING clause. Here, the table rows are recognized through an XQuery expression separated with a slash symbol. After that, the columns are predictable onto the resulting XML fragments using the table COLUMNS clause that detects the appropriate tags through the path expression and allots the preferred table column names with the respective data types.
  • We should be cautious with the column names provided in the clause COLUMNS. If anything is applied other than the upper case, then they may be required to be mentioned for making a straight reference to them. It should be noticed that it is being queried using the alias of the XMLTABLE call somewhat than the consistent table alias.

Examples

Let us illustrate with few instances the Oracle XMLTABLE function using several expressions of XPath for fetching few info from the XML document as below:

XMLTABLE = (XML_namespaces_clause, XQuery_string,XMLTABLE _options)

This describes the XMLTABLE structure where the XML_namespace_clause consists as a set of XML namespace declarations that are referenced by the provided XQuery expression (XQuery_string) further computing the row and with the XPath expression in the clause PATH of the XML_Table_Column, for computing the columns for the whole XMLTABLE function.

Reading Ordernum and Orderdate of all orders

We will query the command below applying the XMLTABLE function for parsing the XML content from the person table as created which also includes few XML data:

CREATE TABLE Persons (PersonID NUMBER, data XMLTYPE);

After running the query, the table will be ready to be operated.

Output:

Oracle XMLTABLE output 1

So, firstly let us enter few records into it using the INSERT statement and a record with XML data type in it as:

INSERT INTO Persons VALUES(1, xmltype(‘<Persons>
<Person pcode=”111” type =”admin”>
<personname>Nikhil</personname>
<profile>Engineer</profile>
<age>30</age>
<mailid>[email protected]</mailid>
</Person>
<Person pcode=”112” type =”admin”>
<personname>Sahil</personname>
<profile>Teacher</profile>
<age>31</age>
<mailid>[email protected]</mailid>
</Person>
<Person pcode=”113” type =”user”>
<personname>Divya</personname>
<profile>Executive</profile>
<age>28</age>
<mailid>[email protected]</mailid>
</Person>
</Persons>’));

We can view the contents of table Persons as;

SELECT * FROM Persons;

Output:

Oracle XMLTABLE output 2

The XML includes the person-related data thus, now we will apply the Oracle XMLTABLE function for retrieving any information from this created XML document using the XPath and XQuery string expressions as follows:

SELECT t.PersonID, x.* FROM Persons t, XMLTABLE ('/Persons/Person' PASSING t.data COLUMNS Personname VARCHAR2 (30) PATH  ‘text()’ ) x WHERE y.PersonID =1;

Here, the server reads the content of node Personname/age/profile/mailid where also sometimes we need to fetch the text value of the presently selected node item. So, in the above query, we have chosen the path as /Persons/Person/personname, and with the use of expression text() we will receive the value of this node. Therefore, the result will read the names of personname and related profiles of entire persons in the table using the XMLTABLE function in Oracle.

SELECT t.PersonID, x.* FROM Persons t, XMLTABLE ('/Persons/Person' PASSING t.data COLUMNS Personname VARCHAR2 (30) PATH 'personname',Profile VARCHAR2(30) PATH 'profile' ) x WHERE t.PersonID =1;

Output:

output 3

Conclusion

  • Oracle XMLTABLE function and operator functions actually well with small XML documents or database tables along with several rows where each one includes an insignificant XML document.
  • Again, whenever the XML documents get superior then the performance of the server becomes worse as equated to the manual parse technique. But when dealing with these big XML documents, the user might have to relinquish the accessibility for the XMLTable operator in favor of a labor-intensive resolution.

Recommended Articles

This is a guide to Oracle XMLTABLE. Here we discuss How the XMLTABLE function works in Oracle along with the examples and outputs. You may also have a look at the following articles to learn more –

  1. Oracle Tablespace
  2. Oracle Index
  3. Oracle GRANT
  4. Oracle NVL()

Primary Sidebar

Footer

Follow us!
  • EDUCBA FacebookEDUCBA TwitterEDUCBA LinkedINEDUCBA Instagram
  • EDUCBA YoutubeEDUCBA CourseraEDUCBA Udemy
APPS
EDUCBA Android AppEDUCBA iOS App
Blog
  • Blog
  • Free Tutorials
  • About us
  • Contact us
  • Log in
Courses
  • Enterprise Solutions
  • Free Courses
  • Explore Programs
  • All Courses
  • All in One Bundles
  • Sign up
Email
  • [email protected]

ISO 10004:2018 & ISO 9001:2015 Certified

© 2025 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

By continuing above step, you agree to our Terms of Use and Privacy Policy.
*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

EDUCBA Login

Forgot Password?

🚀 Limited Time Offer! - 🎁 ENROLL NOW