我有一个很大的Json数据。我把数据通过clob参数输入到程序中。当我处理json数据时,我得到了一个错误字符串文字太长。如何解决这个问题?当json数据的代码数量较少时,一切都按预期工作。提前感谢
我尝试了不同大小的Json数据。不接受超过32767个字符。有什么办法可以解决这个问题吗?
我使用了下面的代码创建或替换过程proc_json数据(json_string clob)是开始dbms_output.put_line(长度(json_string));结束;
使用JSON函数处理数据时,添加RETURNING JSON
或RETURNING 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": 980000000," b":980000000},{"a":99000000,"b":990000000},{"a": 990000000},{"a":100000000,"b": 10000000000}]