Oracle 更新 - JSON 超过 4000 个字符的合并补丁

Oracle Update - JSON Merge Patch with more than 4000 characters

我正在尝试将 JSON 值更新为 oracle table 中的列(CLOB 数据类型)。 JSON 值超过 4000 个字符,字符数根据从应用程序收到的数据动态变化。 JSON_MERGEPATCH 用于将值合并到 table.

中已经存在的现有 JSON 内容

我正在使用 java 作为编程并进行批量更新 (ojdbc8 jar) 以将更新写入 oracle table。我注意到当字符数超过 40000 时使用 JSON_MERGEPATCH 时,CLOB 更新为 NULL,我丢失了 table 中预先存在的数据。有没有办法解决这个问题并将新字段合并到现有的 JSON?

JSON_MERGEPATCH 的语法在 documentation:

如果您不包含“returning 子句”,则 JSON_MERGEPATCH 将默认为 returning 一个 VARCHAR2 值,如果超过 4000 字节,则将应用默认的“错误条款”,即 NULL ON ERROR.

如果您想 return 一个 CLOB 值,那么您需要指定“returning 子句”:

UPDATE table_name
SET   value = JSON_MERGEPATCH(value, :newvalue RETURNING CLOB)
WHERE id = 1;

db<>fiddle here