我正在尝试在oracle sql中的包内创建一个包含多个函数的json文件,我可以在一个选择中创建整个json,但这是一个相当大的选择,所以,我想将所有内容分成多个函数。
问题是,当尝试组装整个 json 时,内部应该有数组并维护 json 结构的值却被放置为字符串。
小例子:
"indicadoresOperacao": "[{\"id\":\"11122/2024\",\"indicadorConceitoSincronizado\":\"true\",\"indicadorSincronizarConceito\":\"false\"
这是在这里生成的:
KEY 'indicadoresOperacao' VALUE get_json_indicadores_op_plano( id_pr),
在函数内部我有一个 SELECT 创建一个 JSON_ARRAYAGG 并返回一个 CLOB。
我尝试的所有事情都不是一起创建整个事情(这需要更多时间)最终以相同的格式结束,我想我知道问题是我试图将 VALUE 与 CLOB 关联,而不是自行选择,我不知道如何解决它以使代码易于阅读并在需要时进行更改。
如果您返回 JSON 格式的值,请使用
FORMAT JSON
按原样使用该值:
KEY 'indicadoresOperacao'
VALUE get_json_indicadores_op_plano(id_pr) FORMAT JSON
但是,您可能不需要使用函数。例如,如果您有示例数据:
CREATE TABLE table_name (id, ics, isc) AS
SELECT '11122/2024', 1, 0 FROM DUAL UNION ALL
SELECT '11123/2024', 0, 1 FROM DUAL;
然后您可以使用以下方法将其表示为包含对象数组的对象:
SELECT JSON_OBJECT(
KEY 'indicadoresOperacao' VALUE JSON_ARRAYAGG(
JSON_OBJECT(
KEY 'id' VALUE id,
KEY 'indicadorConceitoSincronizado'
VALUE CASE ics WHEN 1 THEN 'true' ELSE 'false' END FORMAT JSON,
KEY 'indicadorSincronizarConceito'
VALUE CASE isc WHEN 1 THEN 'true' ELSE 'false' END FORMAT JSON
RETURNING CLOB
)
RETURNING CLOB
)
RETURNING CLOB
) AS json
FROM table_name
哪个输出:
JSON |
---|
{"indicadoresOperacao":[{"id":"11122/2024","indicadorConceitoSincronizado":true,"indicadorSincronizarConceito":false},{"id":"11123/2024","indicadorConceitoSincronizado":false,"indicadorSincronizarConceito “:正确}]} |