You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c执行JSON查询SQL报ORA-00904无效标识符错误原因咨询

ORA-00904报错原因分析
  1. 19c初始版本Bug
    你使用的19.0.0.0.0是Oracle 19c的首个公开发行版本(19.1),该版本存在已知Bug 29579868:CROSS APPLY/OUTER APPLY关键字后跟JSON_TABLE函数时,JSON_TABLE无法正确识别左侧关联表的列,因此抛出T.VALUE标识符无效的错误。
    你使用的线上测试fiddle一般运行的是19c的更高版本(安装了Release Update补丁的19.8及以上版本)、21c或23c,Oracle官方已经在后续版本中修复了该Bug,因此代码可以正常运行。
  2. 表结构不匹配
    如果排除版本Bug的可能性,需要确认你的table_name表确实存在名为value的列:
  • 检查列名是否拼写错误
  • 如果建表时使用双引号定义了大小写敏感的列名(如"value"),则查询时也需要加双引号引用该列,否则Oracle默认会将列名转为大写匹配,也会报标识符无效。
适配19c初始版本的替代写法

不需要打补丁即可正常运行的等价SQL如下,避开了CROSS APPLY的兼容性问题:

SELECT jk.key,
       JSON_VALUE(t.value, '$.' || jk.key) AS value
FROM   table_name t,
       JSON_TABLE(JSON_KEYS(t.value), '$[*]' COLUMNS (key PATH '$')) jk;

内容的提问来源于stack exchange,提问作者user5507535

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:36:03