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