By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE employee
(
ID INTEGER PRIMARY KEY,
NAME VARCHAR2(100),
DATEOFBIRTH DATE,
STARTYEAR CHAR(4),
ENDYEAR CHAR(4),
COMPANY VARCHAR2(100)
);
INSERT INTO employee VALUES (1, 'Tim', TO_DATE('07/04/1994', 'MM/DD/YYYY'), 2020, 2021, 'ABC Co');
1 rows affected
SELECT *
FROM employee;
ID | NAME | DATEOFBIRTH | STARTYEAR | ENDYEAR | COMPANY |
---|---|---|---|---|---|
1 | Tim | 04-JUL-94 | 2020 | 2021 | ABC Co |
UPDATE employee e
SET (name, dateofbirth, startyear, endyear, company) =
(SELECT DECODE(j.name_chk, 1, j.name, e.name),
DECODE(j.dob_chk, 1, j.dateofbirth, e.dateofBirth),
DECODE(j.start_chk, 1, j.startyear, e.startyear),
DECODE(j.end_chk, 1, j.endyear, e.endyear),
DECODE(j.co_chk, 1, j.company, e.company)
FROM JSON_TABLE('{"name":"Jim","endyear":null}'
COLUMNS(name, name_chk NUMBER EXISTS PATH '$.name',
dateOfBirth DATE, dob_chk NUMBER EXISTS PATH '$.dateofbirth',
startyear, start_chk NUMBER EXISTS PATH '$.startyear',
endyear, end_chk NUMBER EXISTS PATH '$.endyear',
company, co_chk NUMBER EXISTS PATH '$.company')) j)
WHERE e.id = 1;
1 rows affected
SELECT *
FROM employee;
ID | NAME | DATEOFBIRTH | STARTYEAR | ENDYEAR | COMPANY |
---|---|---|---|---|---|
1 | Jim | 04-JUL-94 | 2020 | null | ABC Co |