Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Facts about SCN and Rollback Segment Oracle
  • Difference between SYNC and AFFIRM Oracle
  • cache buffer chain latch Oracle
  • Histogram information Oracle
  • Jai Shree Ram Linux/Unix
  • pvmehta.com SQL scripts
    Find which sessions is accessing object that prevent your session to have exclusive locks in Oracle Oracle
  • How to find where datafile is created dbf_info.sql Oracle
  • Kernel Parameter setting explaination for Processes Parameter Linux/Unix
  • Best approach for Oracle database patching sequence to latest/required patchset along with CPU/PSU/any-other-one-off patch ID 865255.1 Oracle
  • chk_space_SID.ksh Linux/Unix
  • find_log_switch.sql Find log switches in graphical manner Oracle
  • Insert cause enqueue locks Oracle
  • runon_allcdbs_find_pdbs.sh Linux/Unix
  • Display the top 5 salaries for each department using single SQL Oracle
  • First Entry in RAC 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

  • sid_wise_sql.sql Oracle
  • Example of How To Resize the Online Redo Logfiles Note:1035935.6 Oracle
  • All Hints for Oracle Databases Oracle
  • Changing unix system clock when Oracle database is running. Oracle
  • Find Multiple levels of object dependencies : depen.sql Oracle
  • Display the top 5 salaries for each department using single SQL 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
  • New Latest Param.sql for finding all hidden parameters also Oracle
  • Directory wise folder wise space usage Linux/Unix
  • fdisk -l explaination about Primary-Logical-Extended Partitions Linux/Unix
  • Reclaim temp tablespace for oracle 8, 8i Oracle
  • Good Site for Oracle Internals Oracle
  • Wait Based Tuning Step by step with SQL statement Oracle
  • 272332.1 CRS 10g Diagnostic Collection Guide Oracle
  • Order by with ROWNUM Oracle

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme