如何创建包含嵌套表的Oracle对象表?

时间:2014-06-03 09:48:54

标签: sql oracle oracle11g user-defined-types

我的问题与 9454933 类似,但我的嵌套表位于对象内。

我希望创建一个用户定义类型的表,其中定义的类型包含一个对象,我的简化设置如下所示

CREATE TYPE DEMO_TYPE1 AS OBJECT (A1 NUMBER, A2 NUMBER);

CREATE TYPE DEMO_TAB_TYPE1 AS TABLE OF DEMO_TYPE1;

CREATE TYPE DEMO_TYPE2 AS OBJECT (B1 NUMBER, B2 DEMO_TAB_TYPE1);

CREATE TABLE DEMO_TAB1 (C1 NUMBER, C2 DEMO_TYPE2);

如果我运行以上操作,我会收到以下错误

The storage clause is not specified for the nested table column or attribute.

这是有道理的,但我无法找出正确的语法来解决这个问题我试过

CREATE TABLE DEMO_TAB1 (C1 NUMBER, C2 DEMO_TYPE2)
NESTED TABLE B2 STORE AS B2_TAB;

但是这个和我试过的所有其他变化都会产生     ORA-00922:缺少或无效选项

那么我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

错误的原因是C2不是嵌套表。嵌套表是C2内的B2,所以你应该试试这个:

CREATE TABLE DEMO_TAB1 (C1 NUMBER, C2 DEMO_TYPE2)
NESTED TABLE C2.B2 STORE AS B2_TAB;

请参阅sqlfiddle:sqlfiddle.com/#!4/6c662/1