Introduction to Oracle XMLTYPE Data Type

In Oracle Database, XMLTYPE is a very useful data type that can be used to store and manipulate XML documents. XML is a markup language used to describe the structure and content of data, and XMLTYPE allows us to easily store and process XML data in the database. In this article, we will introduce the syntax, use cases, examples, and conclusions of the XMLTYPE data type.


When creating an XMLTYPE column, you can specify the XMLTYPE data type in the column definition as shown below:

CREATE TABLE my_table (
  xml_data XMLTYPE

You can also declare an XMLTYPE variable in PL/SQL as shown below:

  xml_var XMLTYPE;
  xml_var := XMLTYPE('<book><title>My Book</title><author>Me</author></book>');

Use Cases

The XMLTYPE data type is ideal for storing and processing XML data. Here are some possible use cases:

  • Storing and retrieving XML documents: XMLTYPE can be used to store and retrieve columns or variables that contain XML data in the database.
  • Analyzing XML data: XMLTYPE can parse XML data into structured data in the Oracle database for analysis and querying.
  • Integration with other systems: Many modern systems use XML as a data interchange format. XMLTYPE can be used conveniently to store and process XML data from other systems in the Oracle database.


Here are two examples that demonstrate how to use the XMLTYPE data type in an Oracle database.

Example 1: Storing and Retrieving XML Data

First, we create a table with an XMLTYPE column and insert some XML data into it:

CREATE TABLE my_table (
  id NUMBER,
  xml_data XMLTYPE

INSERT INTO my_table (id, xml_data) VALUES (1, XMLTYPE('<book><title>My Book</title><author>Me</author></book>'));
INSERT INTO my_table (id, xml_data) VALUES (2, XMLTYPE('<book><title>Another Book</title><author>You</author></book>'));

Now we can use SQL queries to retrieve this XML data. For example, the following query will return all books with a specific author:

SELECT id, xml_data
FROM my_table
WHERE xml_data.existsNode('/book/author[text()="Me"]') = 1;

Example 2: Parsing XML Data

In this example, we will use an XMLTYPE variable to parse a string containing XML data and print out some attribute values.

  xml_var XMLTYPE := XMLTYPE('<book><title>My Book</title><author>Me</author><year>2022</year></book>');
  title VARCHAR2(100);
  author VARCHAR2(100);
  year NUMBER;
  title := xml_var.extract('/book/title/text()').getStringVal();
  author := xml_var.extract('/book/author/text()').getStringVal();
  year := xml_var.extract('/book/year/text()').getNumberVal();
DBMS_OUTPUT.PUT_LINE('Title: ' || title);
DBMS_OUTPUT.PUT_LINE('Author: ' || author);
DBMS_OUTPUT.PUT_LINE('Year: ' || year);

Running the above code will output the following result:

Title: My Book
Author: Me
Year: 2022


In this article, we have introduced the XMLTYPE data type in Oracle database. We have seen that using XMLTYPE makes it easy to store and manipulate XML data for querying and analysis. If you need to store and manipulate XML data in an Oracle database, XMLTYPE can be a very useful data type.