【问题标题】:How do I create an Oracle table of objects containing nested tables?如何创建包含嵌套表的对象的 Oracle 表?
【发布时间】:2014-06-03 20:40:15
【问题描述】:

我的问题类似于 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: 选项缺失或无效

那么我该如何解决呢?

【问题讨论】:

    标签: sql oracle oracle11g user-defined-types


    【解决方案1】:

    错误原因是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

    【讨论】:

    • 我确实尝试过作为解决方案,但仍然得到相同的缺失或无效选项。
    • 发帖前我已经检查过了,它有效。请参阅 sqlfiddle sqlfiddle.com/#!4/6c662/1,请。
    • 对不起,你是对的,我的 SQL 中有一个额外的错字。感谢您的回答以及指向 sqlfiddle 的链接,这是一个很好的资源,我会尽力记住它。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2016-09-18
    • 2012-11-20
    • 1970-01-01
    • 2020-10-10
    • 2020-02-04
    • 2020-12-24
    • 1970-01-01
    相关资源
    最近更新 更多