错误(PL/SQL:ORA-25137:数据值超出范围)在Oracle 21c中执行以下代码时报告。
create table t(id int ,j json);
insert into t values(1,'{"key":"valus"}');
DECLARE
b varchar2(100);
BEGIN
select cast(j as varchar2(100)) into b from t where id=1;
DBMS_OUTPUT.PUT_LINE(b);
END;
错误消息为
ERROR at line 4:
ORA-06550: line 4, column 15:
PL/SQL: ORA-25137: Data value out of range
ORA-06550: line 4, column 3:
PL/SQL: SQL Statement ignored
我使用的oracle版本是
Oracle db2 1c企业版发行版21.0.0.0.0-生产版21.3.0.0.0
我不明白为什么报告此错误。我认为我设置的转换目标大小足够,但"ORA-25137:数据值超出范围"。
谁能解释一下为什么?
1条答案
按热度按时间2uluyalo1#
数据以二进制格式存储在表中,因此您应该使用JSON_SERIALIZE函数将JSON从任何支持的类型转换为文本。
或者,对于以前的版本,使用一些json函数,如:
使用SQL和json数据类型(json_query(),json_table(),...)获取数据时,还有更多函数和选项,您可以找到更多相关信息--https://oracle-base.com/articles/21c/json-data-type-21c