【发布时间】:2020-01-30 14:13:52
【问题描述】:
我正在使用 Oracle 18c 数据库。
对于我的一个查询,我正在尝试从 3 级表生成 JSON。
pages_tbl
page_regions_tbl
region_items_tbl
为此,我准备了以下查询。但它给了我错误ORA-40478: output value too large (maximum: 4000)
SELECT
JSON_ARRAYAGG(
JSON_OBJECT(
'page' VALUE p.name,
'regions' VALUE(
SELECT
JSON_ARRAYAGG(
JSON_OBJECT(
'region' VALUE r.name,
'items' VALUE(
SELECT
JSON_ARRAYAGG(
JSON_OBJECT(
'item_name' VALUE i.item_name, 'item_value' VALUE i.item_value
) RETURNING CLOB
)
FROM region_items_tbl i
WHERE i.region_id = r.region_id
AND i.enabled = 1
)
) RETURNING CLOB
)
FROM page_regions_tbl r
WHERE r.page_id = p.page_id
AND r.enabled = 1
)
) RETURNING CLOB
)
FROM pages_tbl p
WHERE p.category_id = 10150
AND p.enabled = 1
我已经写了RETURNING CLOB,所以我期待顺利的结果,但得到了错误。谁能指出我做错了什么或如何解决此查询
【问题讨论】:
-
你在哪个版本的 oracle 上运行?
-
@OldProgrammer Oracle 18.3
-
我在 oracle 知识库 Doc ID 2354511.1 上找到了一个建议。您可以访问 oracle 支持吗?
-
@OldProgrammer 我无权访问支持帐户。
-
好的。我会发布作为答案。试试看,如果不起作用,我可以删除答案。