ORA-22806:使用json路径项函数时不是对象或REF

rsaldnfx  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(204)

错误"ORA-22806:当我在oracle 21c中运行下面的sql时,报告了not an object or REF "。

create table t(j json);
insert into t values('{"k": "v"}');
select t.j.type() from t t;
SQL> select t.j.type() from t t;
select t.j.type() from t t
           *
ERROR at line 1:
ORA-22806: not an object or REF

但这就是成功

select t.j.k.type() from t t;

我不明白为什么会出现这个错误,有人能帮我吗?

ycl3bljg

ycl3bljg1#

您可以用途:

SELECT JSON_VALUE(j, '$.type()') FROM t;

fiddle
我不明白为什么会出现这个错误,有人能帮我吗?
t.j是列的标识符,您还没有进入JSON结构,所以当您调用t.j.type()时,SQL引擎假定t.j将是一个具有type方法的SQL对象(或者是对具有该方法的对象的引用),并且它似乎没有切换到解析JSON并在JSON解析器中找到type方法。
这可能被归类为JSON实现的bug,但是可以通过使用JSON_VALUE来解决它,如上所示。

相关问题