Discussions
Categories
- 196.9K All Categories
- 2.2K Data
- 239 Big Data Appliance
- 1.9K Data Science
- 450.4K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 546 SQLcl
- 4K SQL Developer Data Modeler
- 187.1K SQL & PL/SQL
- 21.3K SQL Developer
- 295.9K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.6K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 155 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 443 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 Portuguese
How to do an insert to a table with a JSON?

Edisson Gabriel López
Member Posts: 65 Green Ribbon
in SQL & PL/SQL
Hi,
I need a PL/SQL that makes insert with a JSON, how can I do it?
The JSON I have is the following:
[ { "id": 38, "names": "Gerald Smith", "selected": true }, { "id": 28, "names": "Camilo Reyes", "selected": true }, { "id": 24, "names": "Edisson Lopez", "selected": true }, { "id": 36, "names": "Gerald Pineda", "selected": false }, { "id": 37, "names": "Rodrigo Vargas", "selected": false } ]
I need to store the three fields in a table, thank you very much.
Tagged:
Best Answer
-
You don't need PL/SQL, it can be done in SQL. Your source table won't support a boolean type, so you'll need to map "selected" to something else, e.g. 0 and 1.
create table my_table ( id number primary key , names varchar2(100) , selected number(1) ); insert into my_table(id, names, selected) select id, names , case selected when 'true' then 1 when 'false' then 0 end selected from json_table( '[ { "id": 38, "names": "Gerald Smith", "selected": true }, { "id": 28, "names": "Camilo Reyes", "selected": true }, { "id": 24, "names": "Edisson Lopez", "selected": true }, { "id": 36, "names": "Gerald Pineda", "selected": false }, { "id": 37, "names": "Rodrigo Vargas", "selected": false } ]' , '$[*]' columns ( id number path '$.id' , names varchar2 path '$.names' , selected varchar2 path '$.selected' ) ); select * from my_table; 5 rows created. ID NAMES SELECTED ---------- -------------------- ---------- 38 Gerald Smith 1 28 Camilo Reyes 1 24 Edisson Lopez 1 36 Gerald Pineda 0 37 Rodrigo Vargas 0
Answers
-
You don't need PL/SQL, it can be done in SQL. Your source table won't support a boolean type, so you'll need to map "selected" to something else, e.g. 0 and 1.
create table my_table ( id number primary key , names varchar2(100) , selected number(1) ); insert into my_table(id, names, selected) select id, names , case selected when 'true' then 1 when 'false' then 0 end selected from json_table( '[ { "id": 38, "names": "Gerald Smith", "selected": true }, { "id": 28, "names": "Camilo Reyes", "selected": true }, { "id": 24, "names": "Edisson Lopez", "selected": true }, { "id": 36, "names": "Gerald Pineda", "selected": false }, { "id": 37, "names": "Rodrigo Vargas", "selected": false } ]' , '$[*]' columns ( id number path '$.id' , names varchar2 path '$.names' , selected varchar2 path '$.selected' ) ); select * from my_table; 5 rows created. ID NAMES SELECTED ---------- -------------------- ---------- 38 Gerald Smith 1 28 Camilo Reyes 1 24 Edisson Lopez 1 36 Gerald Pineda 0 37 Rodrigo Vargas 0