如何在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中使用对象类型,请确保查看