我必须通过一个SQL查询生成一个JOSN对象.最后,我必须将这个JSON对象保存到一个变量,以便稍后返回它.因此,我为AJAX回调编写了以下代码片段:

DECLARE
    json_result JSON_OBJECT_T;
BEGIN
    SELECT JSON_OBJECT('if'          VALUE ID,
                       'data'        VALUE DATA_BLOB,
                       'upload_date' VALUE UPLOAD_DATE FORMAT JSON) INTO json_result FROM TEST_TABLE WHERE ID = 0;
    apex_json.open_object;
    apex_json.write('success', true);
    apex_json.write('result', json_result);
    apex_json.close_object;
EXCEPTION
    WHEN OTHERS THEN
        apex_json.open_object;
        apex_json.write('success', false);
        apex_json.write('message', sqlerrm);
        apex_json.close_object;
END;

但不太可能出现错误:

PL/SQL: ORA-00932: inconsistent datatypes: expected UDT got CHAR  

我找不到这里出了什么问题.

我们非常感谢您的帮助.

Best regards,
Filip.

推荐答案

您不应该需要顶尖_json,这可以直接在SQL中完成.下面是EMP表上的一个例子.

SELECT JSON_OBJECT (
         KEY 'success' VALUE 'true',
         KEY 'employees' VALUE (
           SELECT JSON_ARRAYAGG(
                    JSON_OBJECT (
                      KEY 'ename' VALUE e.ename,
                      KEY 'empno' VALUE e.empno,
                      KEY 'job' VALUE e.job
                    )
                  )
           FROM   emp e
         )
       ) AS employees
FROM   dual;

因此,要将此值分配给页面项,请在呈现之前使用上面的代码在任何处理点上创建类型为"SQL Query(Returns Single Value)"的计算.

Json相关问答推荐

如何在PowerShell中扩展JSON中的嵌套数组

Allof Indide的JSON模式之一

无法使用Jolt变换在嵌套的JSON中提取值

APIM 生成 JsonArray 到 EventHub

如何使用 jq 将字符串数组转换为对象?

嵌套存储在字符串变量中的 JSON 对象

父键中的 Perl JSON 数组

判断golang中解析的json响应中是否存在所需的json键(不是值)

将文本转换为 python 列表

如何使用 jq 返回此 JSON 文件的文本字段?

为什么在测试 RSPEC 时 JBuilder 不返回 JSON 中的响应正文

如何使用 Newtonsoft.Json 反序列化 JSON 数组

在 C# 中解析 Json rest api 响应

谷歌浏览器不允许我放置断点

在 JSON.stringify() 的输出中隐藏空值

在 Qt 4.7 中解析 JSON 的最简单方法

JSON日期到Java日期?

Sequelize - 如何仅返回数据库结果的 JSON 对象?

在 .NET 中缩小缩进的 JSON 字符串

如何在 JAVA 中对 JSONArray 进行排序