如何在SQL中获取对象类型的属性?

如何在SQL中获取对象类型的属性?,sql,oracle,Sql,Oracle,我创建了一个对象类型和一个具有该类型列的表: CREATE TYPE food_t AS OBJECT ( NAME VARCHAR2 (100) , food_group VARCHAR2 (100) , grown_in VARCHAR2 (100) ) / CREATE TABLE food_table (id number primary key, my_food food_t) / BEGIN INSERT INTO food_table

我创建了一个对象类型和一个具有该类型列的表:

CREATE TYPE food_t AS OBJECT (
   NAME         VARCHAR2 (100)
 , food_group   VARCHAR2 (100)
 , grown_in     VARCHAR2 (100)
)
/

CREATE TABLE food_table (id number primary key, my_food food_t)
/

BEGIN
   INSERT INTO food_table
        VALUES (1, NEW food_t ('Mutter Paneer', 'Curry', 'India'));

   INSERT INTO food_table
        VALUES (2, NEW food_t ('Cantaloupe', 'Fruit', 'Backyard'));

   COMMIT;
END;
/
但当我试图获得我的商品名称时,我得到了ORA-904错误:

SELECT name FROM food_table;
ORA-00904: "NAME": invalid identifier
如果使用对象类型列的名称,则相同:

SELECT my_food.name FROM food_table;
ORA-00904: "NAME": invalid identifier

我做错了什么?

很简单:不要忘记包含表别名。在这种情况下,需要:

SQL> SELECT ft.my_food.name FROM food_table ft;

MY_FOOD.NAME                                                                    
-----------------------------------------------
Mutter Paneer                                                                   
Cantaloupe                                                                      

SQL> SELECT ft.my_food.name FROM food_table ft
  2   WHERE ft.my_food.name LIKE 'C%';

MY_FOOD.NAME                                                                    
-----------------------------------------------
Cantaloupe   

如果在Oracle中使用对象类型,请确保查看

简单:不要忘记包含表别名。在这种情况下,需要:

SQL> SELECT ft.my_food.name FROM food_table ft;

MY_FOOD.NAME                                                                    
-----------------------------------------------
Mutter Paneer                                                                   
Cantaloupe                                                                      

SQL> SELECT ft.my_food.name FROM food_table ft
  2   WHERE ft.my_food.name LIKE 'C%';

MY_FOOD.NAME                                                                    
-----------------------------------------------
Cantaloupe   
如果在Oracle中使用对象类型,请确保查看