【发布时间】:2020-08-21 01:18:36
【问题描述】:
我编写了一个 PL/SQL 代码,它请求 Dremio 服务并接收带有数据库输出的 JSON。 输出保存到 REST_COLLECTION clob。 输出将显示在 APEX 页面中。 这个 Dremio 服务的问题是,我一次只能接收 500 个数据。 解决方案是一个循环和每次结果的连接...... 这就是我的问题。
JSON 看起来像这样:
{"rowCount":307,"schema":[{"name":"EXPORTDATUM","type":{"name":"DATE"}},
{"name":"DOKUMENTE","type":{"name":"DOUBLE"}},{"name":"SEITEN","type":{"name":"DOUBLE"}},
{"name":"STAPELKLASSE","type":{"name":"VARCHAR"}},{"name":"FORMULAR","type"
{"name":"VARCHAR"}}],"rows":[{"EXPORTDATUM":"2019-02-04","DOKUMENTE":9.0,"SEITEN":37.0,"STAPELKLASSE":"TEST","FORMULAR":"TEST"}]}
每次连接 JSON 字符串都会导致页面视图出现 JSON 错误,因为有多个根元素。
SUBSTR 给定字符串不是常用方式,Dremio 输出可能会改变。
每次创建多个 clob 是可能的,但是我的查询不知道 clob 的数量。 顺便说一句,查询看起来像这样:
select
to_date(j."EXPORTDATUM", 'YYYY-MM-DD') as "EXPORTDATUM",
j."DOKUMENTE",
j."SEITEN",
j."STAPELKLASSE",
j."FORMULAR"
from apex_collections c, json_table(
c.clob001 format json,
'$.rows[*]'
columns (
"EXPORTDATUM" VARCHAR2(4000) path '$.EXPORTDATUM',
"DOKUMENTE" VARCHAR2(4000) path '$.DOKUMENTE',
"SEITEN" VARCHAR2(4000) path '$.SEITEN',
"STAPELKLASSE" VARCHAR2(4000) path '$.STAPELKLASSE',
"FORMULAR" VARCHAR2(4000) path '$.FORMULAR'
)
) j
where c.collection_name = 'REST_COLLECTION'
我希望有一个解决方案可以连接多个 JSON 而不使用子字符串。
【问题讨论】:
标签: json oracle plsql oracle-apex oracle12c