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

Oracle 19c带FORMAT JSON的JSON_OBJECT查询报ORA-00932错误的解决

ORA-00932错误原因及解决方法

错误原因

FORMAT JSON子句用于告知Oracle,JSON_OBJECT的VALUE部分是已有的JSON格式内容,但它要求对应的值必须是Oracle兼容的JSON类型(比如原生JSON数据类型、或通过JSON()/JSON_OBJECT()等构造函数生成的JSON对象)。你当前传入的是普通字符串(CHAR类型),Oracle无法将其识别为符合要求的UDT(用户定义类型,此处特指JSON相关类型),因此触发ORA-00932: inconsistent datatypes: expected UDT got CHAR错误。

解决方法

有两种可行的调整方式:

方式1:将字符串转为JSON类型

使用JSON()函数把你的JSON格式字符串包装成Oracle原生JSON类型,满足FORMAT JSON的类型要求:

SELECT JSON_OBJECT(
                    KEY   'Entities' 
                    VALUE JSON('{
                             "Entities": {
                               "Formula": "FormulaHandling",
                               "Lookup_IsoUnit": "FormulaHandling",
                               "FormulaItem": "FormulaHandling"
                             }
                           }') FORMAT JSON
                  )
  FROM dual;

方式2:直接构造嵌套JSON_OBJECT(更规范)

避免传入字符串,直接用JSON_OBJECT嵌套构造目标JSON结构,无需依赖FORMAT JSON,同时避免类型问题:

SELECT JSON_OBJECT(
                    KEY 'Entities' VALUE JSON_OBJECT(
                        KEY 'Entities' VALUE JSON_OBJECT(
                            KEY 'Formula' VALUE 'FormulaHandling',
                            KEY 'Lookup_IsoUnit' VALUE 'FormulaHandling',
                            KEY 'FormulaItem' VALUE 'FormulaHandling'
                        )
                    )
                  )
  FROM dual;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:32:40