这个问题是后续问题另一个问题 https://stackoverflow.com/questions/75183126/oracle-apex-22-21-rest-data-source-nested-json-array-discovery.
摘要:我有一个返回嵌套 JSON 数组的 API。正在通过 APEX 提取数据REST 数据源. The 行选择器 in the 数据简介被设定为 ”。” (选择“根节点”)。
The lines
数组已手动添加到列 (LINES) 中数据简介, set 数据类型 to JSON文档,并使用lines
as the selector.
SAMPLE JSON RESPONSE FROM API
[ {
"order_number": "so1223",
"order_date": "2022-07-01",
"full_name": "Carny Coulter",
"email": "[email protected] /cdn-cgi/l/email-protection",
"credit_card": "3545556133694494",
"city": "Myhiya",
"state": "CA",
"zip_code": "12345",
"lines": [
{
"product": "Beans - Fava, Canned",
"quantity": 1,
"price": 1.99
},
{
"product": "Edible Flower - Mixed",
"quantity": 1,
"price": 1.50
}
]
},
{
"order_number": "so2244",
"order_date": "2022-12-28",
"full_name": "Liam Shawcross",
"email": "[email protected] /cdn-cgi/l/email-protection",
"credit_card": "6331104669953298",
"city": "Humaitá",
"state": "NY",
"zip_code": "98670",
"lines": [
{
"order_id": 5,
"product": "Beans - Green",
"quantity": 2,
"price": 4.33
},
{
"order_id": 1,
"product": "Grapefruit - Pink",
"quantity": 5,
"price": 5.00
}
]
},
]
订单属性已同步到本地表(表名:SOTEST_LOCAL)
该表有正确的数据。如下所示,LINES
列包含 JSON 数组。
然后我创建了一个ORDER_LINES
从中提取 JSON 的子表LINES
栏目中的SOTEST_LOCAL
桌子。 (抱歉表名......我应该将表命名为ORDERS_LOCAL
and ORDER_LINES_LOCAL
)
CREATE TABLE "SOTEST_ORDER_LINES_LOCAL"
( "LINE_ID" NUMBER,
"ORDER_ID" NUMBER,
"LINE_NUMBER" NUMBER,
"PRODUCT" VARCHAR2(200) COLLATE "USING_NLS_COMP",
"QUANTITY" NUMBER,
"PRICE" NUMBER,
CONSTRAINT "SOTEST_ORDER_LINES_LOCAL_PK" PRIMARY KEY ("LINE_ID")
USING INDEX ENABLE
) DEFAULT COLLATION "USING_NLS_COMP"
/
ALTER TABLE "SOTEST_ORDER_LINES_LOCAL" ADD CONSTRAINT "SOTEST_ORDER_LINES_LOCAL_FK" FOREIGN KEY ("ORDER_ID")
REFERENCES "SOTEST_LOCAL" ("ORDER_ID") ON DELETE CASCADE ENABLE
/
QuickSQL version..
SOTEST_ORDER_LINES_LOCAL
LINE_ID /pk
ORDER_ID /fk SOTEST_LOCAL references ORDER_ID
LINE_NUMBER
PRODUCT
QUANTITY
PRICE
因此,根据 Carsten 在上一个问题中的回答,我可以编写 SQL 来从LINES
栏目中的SOTEST_LOCAL
表到子表SOTEST_ORDER_LINES_LOCAL
.
我的问题分为两部分。