Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • currwaitobj.sql SQl_ID and SQL statement you can get from currwaitobj.sql Oracle
  • Small sample shell program Linux/Unix
  • Rman Notes -1 Oracle
  • CTAS with LONG Column for 9i and higher Oracle
  • DBMS_UTILITY PACKAGE Oracle
  • Find long Running Transaction Linux/Unix
  • Running some SQL on multiple databases connecting using monitoring userid and password Linux/Unix
  • grep multuple patterns Linux/Unix
  • export import with parameter file. Oracle
  • To see mem usage and CPU usage system wide. Linux/Unix
  • block_ident.sql Oracle
  • oracle fast start failover best practice Oracle
  • 751131.1 New Article Error 2819 While Requesting a Systemstate Dump Oracle
  • Physical Standby switchover with session active Oracle
  • move_arch_files.ksh Linux/Unix

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

  • Nice notes on wait events Oracle
  • V$ROLLSTAT status is Full Oracle
  • Find Multiple levels of object dependencies : depen.sql Oracle
  • Implementing Listener Security Oracle
  • Rman Notes -1 Oracle
  • Oracle 11g RAC on OEL 5 and Vmware 2 Oracle

Leave a Reply Cancel reply

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

Categories

  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Django (0)
  • GIT (1)
  • Linux/Unix (150)
  • MYSQL (5)
  • Oracle (403)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (1)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (18)
  • rman-dataguard (26)
  • shell (151)
  • SQL scripts (349)
  • SQL Server (6)
  • Uncategorized (5)
  • Videos (0)

Recent Posts

  • Key Management in Oracle: The Core Issue: Missing Master Key12-May-2026
  • SAT Mathematics 10 questions and answer at the end.30-Apr-2026
  • top 10 AI news today30-Apr-2026
  • runon_allpdbs_show_conname.sh23-Apr-2026
  • runon_allcdbs_find_pdbs.sh23-Apr-2026
  • Running PDB on single node in RAC09-Apr-2026
  • find_arc.sql09-Apr-2026
  • pvm_pre_change.sql08-Apr-2026
  • find_encr_wallet.sql08-Apr-2026
  • find_pdbs.sql08-Apr-2026

Archives

  • 2026
  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • SQL Tracker by SID sqltrackerbysid.sql Oracle
  • cif crons Linux/Unix
  • Jai Shree Ram Oracle
  • When error comes for temporary tablespace with version <= 9i Oracle
  • Export Import with QUERY Oracle
  • how to find VIP from ifconfig Linux/Unix
  • Windows based Command line mailing program like mailx (Sednmail for windows) PHP/MYSQL/Wordpress
  • Small sample shell program Linux/Unix

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme