{
"user_key":1,
"user_name":"Arthur Stygall",
"user_type":"End-user",
"user_status":"Active",
"user_emp_type":"Full-Time",
"user_login":"arthurstygall",
"user_password":"test1243",
"user_address":{
"street":"200 Sporting Green",
"city":"South San Francisco",
"state":"CA",
"zipCode":99236,
"country":"United States of America"
},
"user_phone":[
{
"type":"Office",
"number":"823-555-9969"
},
{
"type":"Mobile",
"number":"976-555-1234"
}
],
"user_email":"arthur.stygall@achme.com",
"user_create_date":"19-JAN-10",
"user_manager_name":"Ron Howard",
"user_experience":[
{
"idx":1,
"info":{
"Company":"Microsoft",
"Role":"Architect",
"Description":"Technical architect for Microsoft Azure Cloud"
}
},
{
"idx":2,
"info":{
"Company":"Adobe",
"Role":"PMTS",
"Description":"Lead developer for Adobe Flash technology"
}
}
]
}
DROP TABLE test_user
CREATE TABLE test_user (
id RAW(16) NOT NULL,
loading_date TIMESTAMP(6) WITH TIME ZONE,
user_json CLOB CHECK (user_json IS JSON)
)
INSERT INTO test_user
VALUES (
SYS_GUID(),
SYSTIMESTAMP,
'{
"user_key":1,
"user_name":"Arthur Stygall",
"user_type":"End-user",
"user_status":"Active",
"user_emp_type":"Full-Time",
"user_login":"arthurstygall",
"user_password":"test1243",
"user_address":{
"street":"200 Sporting Green",
"city":"South San Francisco",
"state":"CA",
"zipCode":99236,
"country":"United States of America"
},
"user_phone":[
{
"type":"Office",
"number":"823-555-9969"
},
{
"type":"Mobile",
"number":"976-555-1234"
}
],
"user_email":"arthur.stygall@achme.com",
"user_create_date":"19-JAN-10",
"user_manager_name":"Ron Howard",
"user_experience":[
{
"idx":1,
"info":{
"Company":"Microsoft",
"Role":"Architect",
"Description":"Technical architect for Microsoft Azure Cloud"
}
},
{
"idx":2,
"info":{
"Company":"Adobe",
"Role":"PMTS",
"Description":"Lead developer for Adobe Flash technology"
}
}
]
}'
)
COMMIT
CREATE OR REPLACE VIEW view_test_user
AS
SELECT d.*
FROM test_user p,
JSON_TABLE(
p.user_json,
'$'
columns (
USER_KEY VARCHAR2(30 CHAR) path '$.user_key',
USER_NAME VARCHAR2(30 CHAR) path '$.user_name',
USER_TYPE VARCHAR2(128 CHAR) path '$.user_type',
USER_STATUS VARCHAR2(10 CHAR) path '$.user_status',
USER_EMP_TYPE VARCHAR2(16) path '$.user_emp_type',
USER_LOGIN VARCHAR2(16) path '$.user_login',
USER_PASSWORD VARCHAR2(16) path '$.user_password',
USER_DTLS_STREET VARCHAR2(32 CHAR) path '$.user_address.street',
USER_DTLS_CITY VARCHAR2(32 CHAR) path '$.user_address.city',
USER_DTLS_COUNTY VARCHAR2(32 CHAR) path '$.user_address.county',
USER_DTLS_POSTCODE VARCHAR2(10 CHAR) path '$.user_address.postcode',
USER_DTLS_STATE VARCHAR2(2 CHAR) path '$.user_address.state',
USER_DTLS_PROVINCE VARCHAR2(2 CHAR) path '$.user_address.province',
USER_DTLS_ZIP VARCHAR2(8 CHAR) path '$.user_address.zipCode',
USER_DTLS_COUNTRY VARCHAR2(32 CHAR) path '$.user_address.country',
NESTED PATH '$.user_phone[*]'
columns (
USER_PHONE_TYPE VARCHAR2(24 CHAR) path '$.type',
USER_PHONE_NUMBER VARCHAR2(24 CHAR) path '$.number'
),
USER_EMAIL VARCHAR2(1024 CHAR) path '$.user_email',
USER_CREATE_DATE VARCHAR2(32 CHAR) path '$.user_create_date',
USER_MANAGER_NAME VARCHAR2(32 CHAR) path '$.user_manager_name',
NESTED PATH '$.user_experience[*]'
columns (
USER_EXP_IDX NUMBER(38) path '$.idx',
USER_EXP_CMPNY VARCHAR2(256 CHAR) path '$.info.Company',
USER_EXP_ROLE VARCHAR2(14 CHAR) path '$.info.Role',
USER_EXP_DESC VARCHAR2(1024 CHAR) path '$.info.Description'
)
)
) d
SELECT * FROM view_test_user