【问题标题】:How do I create an Oracle table with nested tables of object types?如何使用对象类型的嵌套表创建 Oracle 表?
【发布时间】:2012-03-16 07:56:06
【问题描述】:

我有一个高度嵌套的 OBJECT TYPE 结构,它允许我以树状方式保存数据。

我现在想创建一个表来缓存这些对象,但是我在创建表时遇到了困难。我怀疑我的问题是多个嵌套级别,但不知道如何解决。

CREATE TYPE STEP_OBJ AS OBJECT (
  ID                        VARCHAR2(20),
  OTHER_FIELDS              VARCHAR2(100));
/

CREATE TYPE STEP_TAB_OBJ AS TABLE OF STEP_OBJ;
/

CREATE TYPE TREE_OBJ AS OBJECT (
  STEPS       STEP_TAB_OBJ,
  COMPLETE    VARCHAR2(1));
/

CREATE TYPE TABLE_OF_TREE_OBJ AS TABLE OF TREE_OBJ;
/

CREATE TABLE TREE_TABLE_CACHE (
   HANDLE               VARCHAR2(20),
   TABLE_OF_TREES       TABLE_OF_TREE_OBJ)
   NESTED TABLE TABLE_OF_TREES STORE AS TREE_TABLE_CACHE_OBJS;
/

CREATE TABLE TREE_TABLE_CACHE (
*
ERROR at line 1:
ORA-02320: failure in creating storage table for nested table column TABLE_OF_TREES
ORA-22913: must specify table name for nested table column or attribute

甲骨文 11g。

【问题讨论】:

    标签: oracle plsql oracle11g user-defined-types


    【解决方案1】:

    您需要为内部集合指定一个存储子句。语法只是将嵌套集合的子句包装在括号中,如下所示:

    SQL> CREATE TABLE TREE_TABLE_CACHE (
      2     HANDLE               VARCHAR2(20),
      3     TABLE_OF_TREES       TABLE_OF_TREE_OBJ)
      4     NESTED TABLE TABLE_OF_TREES STORE AS TREE_TABLE_CACHE_OBJS
      5     ( NESTED TABLE STEPS          STORE AS TREE_TABLE_CACHE_STEPS)
      8   /
    
    Table created.
    
    SQL> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 2020-03-23
      相关资源
      最近更新 更多