Oracle 12c PL/JSON 截断 5000 个字符的字符串

Oracle 12c PL/JSON Chopping Off Strings at 5000 Characters

我在 PL/JSON 恰好截断 5000 个字符的字符串值时遇到问题。

示例数据:{"n1":"v1","n2":"v2","n3":"10017325060844,10017325060845,... this goes on for a total of 32,429 characters ...10017325060846,10017325060847"}

在我将 JSON 字符串转换为一个对象后,我 运行 这个...

dbms_output.put_line(json_obj.get('n3').get_string);

并且只输出前5000个字符。所以我做了一些挖掘,see line 26 of this code。在其正下方的第 31 行,正在设置 extended_str 并包含所有 32,429 个字符。那么现在让我们继续讨论 get_string() 成员函数。有两个。我确认它是第一个被调用的,带有 max_byte_sizemax_char_size 参数的那个。这两个参数都为空。那么,为什么我的文本被截断为 5000 个字符?我需要它来处理 varchar2(32767)clobs 的数据字符串。谢谢!

版本:Oracle Database 12c 企业版 12.1.0.2.0 版 - 64 位生产

更新: 我发现文本的截断来自 line 35dbms_lob.read(str, amount, 1, self.str);。我之前忽略了这段代码,因为我看到了注释并且知道我的字符串不为空。那么为什么需要这个读取呢?这是一个错误吗?

作为 pljson 项目的维护者,我已经在 github (https://github.com/pljson/pljson/issues/154) 上回答了您的问题。如有任何进一步的问题,请随时在 github.

上的同一问题线程中提问