我想将本地 json clob 变量转换并插入到这样的表中:
insert into IMP_JSON
select json_name, json_value
from json_table (
l_clob format json,
'$[*]' error on error columns (
json_name varchar2(32) path '$.name' null on empty,
json_value varchar2(32) path '$.value' null on empty
)
)
使用此代码,我收到一条错误消息
提供的 JavaScript 对象表示法 (JSON) 运算符生成的结果超出了 RETURN 子句中指定的最大长度。请增加 RETURNING 子句中数据类型的最大大小,或在 RETURNING 子句中使用 CLOB 或 BLOB。
我找不到如何RETURNING
在中包含子句json_table
,但如果我跳过error on error
并运行该过程,则生成的表看起来完整且未被截断。
- 为什么虽然它可以工作但是我还是收到错误消息?
- 删除是否安全
error on error
,或者它是否会截断其他输入的数据? - 如何
RETURNING
向 json_table 添加子句?
json_value
您使用的函数默认将返回 varchar2(4000)。要扩展它,您可以使用returning
子句,正如错误消息所建议的那样。使用返回,您的查询应该是:另外请注意,如果您仍然收到错误
SQL Error: ORA-00910: specified length too long for its datatype
。这意味着您的 DB 参数max_string_size
可能是standart
。您可以检查它:您可能需要将其设置为
extended
。