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
我正在尝试将 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