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

如何在SQL中获取对象类型属性?遇ORA-904错误求助

解决Oracle对象类型列查询的ORA-904错误

你碰到的ORA-904(标识符无效)错误,根源是查询对象类型列的属性时用错了语法。当表中包含自定义对象类型的列时,直接写my_food.name这种写法Oracle没法正确解析,必须通过表名或表别名来明确限定对象列。

正确的查询方式

下面几种写法都能正常获取食物名称:

  1. 使用表别名(推荐,代码更简洁易读)
SELECT ft.my_food.name AS food_name
FROM food_table ft;
  1. 直接用表名限定
    如果不想用别名,直接通过表名来限定对象列也可以:
SELECT food_table.my_food.name AS food_name
FROM food_table;
  1. 用VALUE函数访问对象实例
    VALUE函数可以返回行中的完整对象实例,再通过点符号访问属性:
SELECT VALUE(ft).name AS food_name
FROM food_table ft;

查询多个对象属性的示例

如果需要一次性查询所有对象属性和表的其他列,参考这个写法:

SELECT ft.id,
       ft.my_food.name AS food_name,
       ft.my_food.food_group AS food_group,
       ft.my_food.grown_in AS grown_location
FROM food_table ft;

额外提示:更新对象属性的正确语法

之后如果要更新对象列的某个属性,也要遵循同样的限定规则,比如:

UPDATE food_table ft
SET ft.my_food.grown_in = 'Northern India'
WHERE ft.id = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:22:23