Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Ports used by Oracle Software Oracle
  • Implementing Listener Security Oracle
  • Virtual Indexes in Oracle Oracle
  • SQLPLUS COPY command Precautions. Oracle
  • create database syntax Oracle
  • Another Tuning Article for subheap of shared pool Oracle
  • Check Oracle installed products using one command Oracle
  • Oracle 11g RAC on OEL 5 and Vmware 2 Oracle
  • move_arch_files.ksh Linux/Unix
  • Updated LCK.SQL file. Oracle
  • catall.sh Linux/Unix
  • scripts to take listener.log backup Linux/Unix
  • V$ROLLSTAT status is Full Oracle
  • Load testing on Oracle 19C RAC with HammerDB Oracle
  • How to find password change date for user Oracle

JSON/XML Types in Oracle

Posted on 18-Mar-202518-Mar-2025 By Admin No Comments on JSON/XML Types in Oracle

Handling JSON and XML Data in Oracle

Oracle provides built-in support for JSON and XML data storage, querying, and manipulation. Below are methods to handle both data types efficiently.


1. Handling JSON Data in Oracle

A. Storing JSON Data

  • JSON can be stored in:
    • CLOB (Character Large Object)
    • VARCHAR2 (for small JSON documents)
    • BLOB
    • Native JSON Data Type (from Oracle 21c)

Example: Creating a Table with JSON Column

CREATE TABLE employees (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(100),
    details CLOB CHECK (details IS JSON) -- Enforce JSON format
);

B. Inserting JSON Data

INSERT INTO employees VALUES (1, 'John Doe', '{"age": 30, "role": "Developer"}');

C. Querying JSON Data

1. Extracting JSON Values Using JSON_VALUE

SELECT name, JSON_VALUE(details, '$.age') AS age
FROM employees
WHERE JSON_VALUE(details, '$.role') = 'Developer';
  • $.age → Extracts age field.
  • $.role → Filters JSON objects where role = Developer.

2. Querying JSON Data Using JSON_TABLE

SELECT emp_id, jt.age, jt.role
FROM employees,
     JSON_TABLE(details, '$' COLUMNS (age NUMBER PATH '$.age', role VARCHAR2(100) PATH '$.role')) jt;
  • Converts JSON fields into relational table format.

D. Updating JSON Data

UPDATE employees 
SET details = JSON_TRANSFORM(details, SET '$.age' = 35)
WHERE id = 1;
  • JSON_TRANSFORM modifies JSON fields without rewriting the entire JSON document.

E. Indexing JSON Data

For faster retrieval, create a JSON Search Index:

CREATE INDEX emp_json_idx ON employees (details) INDEXTYPE IS JSON;

2. Handling XML Data in Oracle

A. Storing XML Data

XML can be stored in:

  • CLOB
  • XMLType (Oracle’s optimized XML storage type)

Example: Creating a Table with XML Column

CREATE TABLE orders (
    order_id NUMBER PRIMARY KEY,
    order_details XMLTYPE
);

B. Inserting XML Data

INSERT INTO orders VALUES (101, XMLTYPE('<order><customer>John</customer><total>100</total></order>'));

C. Querying XML Data

1. Extracting XML Data Using EXTRACTVALUE

SELECT order_id, EXTRACTVALUE(order_details, '/order/customer') AS customer
FROM orders;
  • Retrieves customer name from the XML structure.

2. Using XMLTABLE for More Complex Queries

SELECT o.order_id, x.customer, x.total
FROM orders o,
     XMLTABLE('/order' PASSING o.order_details
              COLUMNS customer VARCHAR2(100) PATH 'customer',
                      total NUMBER PATH 'total') x;
  • Converts XML fields into relational table format.

D. Updating XML Data

Using XMLQuery and XMLModify:

UPDATE orders
SET order_details = XMLModify(order_details, 'replace value of (/order/total/text())[1] with "150"')
WHERE order_id = 101;
  • Updates the total amount in the XML.

E. Indexing XML Data

For fast lookups, create an XML Index:

CREATE INDEX order_xml_idx ON orders (order_details) INDEXTYPE IS XDB.XMLINDEX;

3. JSON vs. XML in Oracle

FeatureJSONXML
StorageCLOB, VARCHAR2, BLOB, JSON TypeXMLType, CLOB
Query LanguageSQL with JSON functionsXPath, XQuery
PerformanceFaster for small, simple documentsBetter for hierarchical, large data
IndexingJSON Index (JSON_VALUE, JSON_TABLE)XML Index (XMLIndex)

Conclusion

  • Use JSON for lightweight, structured data (API responses, logging).
  • Use XML when hierarchical structure and schema validation are needed.
  • Indexes improve performance for querying both JSON and XML.
  • Conversion Functions (JSON_TABLE, XMLTABLE) help integrate them with relational queries.

Oracle

Post navigation

Previous Post: CPU Core related projections
Next Post: How to connect to Oracle Database with Wallet with Python.

Related Posts

  • pvm_rbs1.sql (to collect rbs info from db) Oracle
  • Rownum with Order by Oracle
  • good note for shared pool tunnig Oracle
  • Implementing Listener Security Oracle
  • Changing Instance Name ( No DB_NAME) Oracle
  • How to choose Driver table in SQL statement Oracle

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Linux/Unix (149)
  • MYSQL (5)
  • Oracle (392)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (0)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (17)
  • rman-dataguard (26)
  • shell (149)
  • SQL scripts (341)
  • SQL Server (6)
  • Uncategorized (0)
  • Videos (0)

Recent Posts

  • SQL Server Vs Oracle Architecture difference25-Jul-2025
  • SQL Server: How to see historical transactions25-Jul-2025
  • SQL Server: How to see current transactions or requests25-Jul-2025
  • T-SQL Vs PL/SQL Syntax25-Jul-2025
  • Check SQL Server edition25-Jul-2025
  • Checking SQL Server Version25-Jul-2025
  • Oracle vs MYSQL Architecture differences (For DBAs)24-Jul-2025
  • V$INSTANCE of Oracle in MYSQL24-Jul-2025
  • Day to day MYSQL DBA operations (Compared with Oracle DBA)24-Jul-2025
  • MYSQL and Oracle Comparison for Oracle DBA24-Jul-2025

Archives

  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • Changing default shell Linux/Unix
  • To find all disk io ( EMC as well as local) Linux/Unix
  • Transfer SQL Profiles from One database to other database. Oracle
  • Find Plan Hash value fphv.sql Oracle
  • Find sort details from Db find_sort.sql Oracle
  • All About oracle password and security from metalink Oracle
  • oracle 11g RAC on vmware Oracle
  • ipcs -l Linux/Unix

Copyright © 2025 pvmehta.com.

Powered by PressBook News WordPress theme