ORA - 06550字符串文字太长:当向过程传递大Json数据时



我有一个很大的Json数据。我把数据通过clob参数输入到程序中。当我处理json数据时,我得到了一个错误字符串文字太长。如何解决这个问题?当json数据的代码数量较少时,一切都按预期工作。提前感谢

我尝试了不同大小的Json数据。不接受超过32767个字符。有什么办法可以解决这个问题吗?

我使用了下面的代码创建或替换过程proc_json数据(json_string clob)是开始dbms_output.put_line(长度(json_string));结束;

使用JSON函数处理数据时,添加RETURNING JSONRETURNING CLOB选项;否则默认返回VARCHAR2数据类型,SQL限制为4000个字符,PL/SQL限制为32767个字符。

例如:

CREATE TABLE table_name (a, b, c) AS
SELECT LEVEL*1e6, LEVEL*1e7, LEVEL*1e8 FROM DUAL CONNECT BY LEVEL <= 100;

:

SELECT JSON_ARRAYAGG(
JSON_OBJECT(
KEY 'a' VALUE a,
KEY 'b' VALUE b,
KEY 'c' VALUE c
)
ORDER BY a
) AS result
FROM   table_name

输出:

ORA-40478: output value too large (maximum: 4000)

但是如果您指定RETURNING(在本例中为FORMAT)子句:

SELECT JSON_ARRAYAGG(
JSON_OBJECT(
KEY 'a' VALUE a,
KEY 'b' VALUE b,
KEY 'c' VALUE c
RETURNING CLOB
) FORMAT JSON
ORDER BY a
RETURNING CLOB
) AS result
FROM   table_name

则输出为

[{"a":1000000,"b":10000000,"c":100000000},{"a":2000000,"b":20000000,"c":200000000},{"a":3000000,"b":30000000},{"a":4000000,"b":40000000,"c":400000000},

{"a": 980000000," b":980000000},{"a":99000000,"b":990000000},{"a": 990000000},{"a":100000000,"b": 10000000000}]

最新更新