我试图在嵌套表中获取元组的引用,但是我收到了错误,
ORA-00907: missing right parenthesis
这就是我正在做的事情:
SELECT REF(VALUE(a))
FROM CITY c, TABLE(c.airports) a
WHERE a.code = 'LHR';
我定义的类型:
CREATE TYPE AirportType AS OBJECT(
Code varchar2(10),
Size int
);
CREATE TYPE AirportListType AS TABLE OF AirportType;
CREATE TYPE CityType AS OBJECT(
Name varchar2(30),
Airports AirportListType
);
这是我创建城市表的方式:
CREATE TABLE CITY OF CityType
NESTED TABLE Airports STORE AS Airport_Tab;
插入的一个例子:
INSERT INTO CITY VALUES(CityType('London', AirportListType(AirportType('LHR', 999))));
答案 0 :(得分:0)
您无法在模型中引用单个机场。要引用对象,您需要一个对象标识符。嵌套表不能有OID。请参阅nested_table_col_properties中有关oid_clause
的限制。
这是一个允许引用单个机场的模型示例。
CREATE TYPE AirportType AS OBJECT(
code VARCHAR2(10),
the_size INTEGER
);
/
CREATE TYPE AirportListType AS TABLE OF REF AirportType;
/
CREATE TYPE CityType AS OBJECT(
name VARCHAR2(30),
airports AirportListType
);
/
CREATE TABLE airports of AirportType (code PRIMARY KEY);
CREATE TABLE city OF CityType
NESTED TABLE airports STORE AS city_airports;
INSERT INTO airports VALUES(AirportType('LHR', 999));
INSERT INTO airports VALUES(AirportType('LCY', 888));
INSERT INTO airports VALUES(AirportType('ZHR', 777));
INSERT INTO city VALUES(
CityType(
'London',
AirportListType(
(select ref(a) from airports a where code = 'LHR'),
(select ref(a) from airports a where code = 'LCY')
)
)
);
COMMIT;
SELECT a.column_value AS airport_ref
FROM city c, table(c.airports) a
WHERE deref(a.column_value).code = 'LHR';
AIRPORT_REF
--------------------------------------------------------------------------------
2202086CEE381BDAB100DFE053020011AC9C4C6CEE381BDAAF00DFE053020011AC9C4C