Oracle中JSON_ARRAYAGG返回结果截断,如何获取完整数据?
解决Oracle JSON输出截断问题
方法一:调整SQL Developer显示设置
SQL Developer默认会限制CLOB类型字段的显示长度,导致大JSON结果被截断。按以下步骤修改:
- 打开SQL Developer,点击顶部菜单「工具」→「首选项」
- 在左侧导航栏选择「数据库」→「高级」
- 在右侧找到「SQL查询结果」区域,修改「CLOB值的最大字符数」为更大的值(例如100000或更大)
- 保存设置后重启SQL Developer,重新执行查询即可看到完整结果
方法二:使用SPOOL命令导出结果到文件
如果调整设置后仍有问题,或需要直接保存完整JSON,可以用SPOOL命令将结果导出到本地文件:
-- 设置输出参数,适配大内容输出 SET LINESIZE 32767 SET LONG 32767 SET LONGCHUNKSIZE 32767 -- 指定本地输出文件路径(可自行修改) SPOOL D:\full_json_result.txt -- 执行查询(可去掉`distinct`,因c1为唯一值,重复判断无意义) SELECT JSON_ARRAYAGG( JSON_OBJECT( 'id' VALUE c1, 'value' VALUE c2, 'description' VALUE c3) RETURNING CLOB) FROM test; -- 停止导出 SPOOL OFF
方法三:验证JSON完整性
可以先查询生成的CLOB长度,确认数据库端已生成完整数据:
SELECT DBMS_LOB.GETLENGTH( JSON_ARRAYAGG( JSON_OBJECT( 'id' VALUE c1, 'value' VALUE c2, 'description' VALUE c3) RETURNING CLOB) ) AS json_total_length FROM test;
如果返回的长度远大于当前显示的字符数,说明是客户端显示限制问题,用前两种方法即可解决。
内容的提问来源于stack exchange,提问作者mikcutu
相关产品推荐
相关产品推荐

