2011-04-25 51 views
4

這裏是我或模式的一個片段:我可以創建一個嵌套表作爲屬性的對象表嗎?

CREATE TYPE artist_table_type AS TABLE OF REF artist_type; 
/

CREATE TYPE track_type AS OBJECT (
    title VARCHAR(1000), 
    duration INT, 
    release_date DATE, 

    producers artist_table_type, 

    MEMBER FUNCTION getProducers RETURN artist_table_type, 
    MEMBER FUNCTION getRemixers RETURN artist_table_type 
); 
/
CREATE TABLE track_obj_table OF track_type; 

當我嘗試運行它,我得到的錯誤:

CREATE TABLE track_obj_table OF track_type 
* 
ERROR at line 1: 
ORA-22913: must specify table name for nested table column or attribute 

我懷疑,這是因爲在track_type表型目的?

回答

6

它只是意味着你必須提供嵌套表的存儲子句:

SQL> CREATE TABLE track_obj_table OF track_type; 
CREATE TABLE track_obj_table OF track_type 
* 
ERROR at line 1: 
ORA-22913: must specify table name for nested table column or attribute 


SQL> CREATE TABLE track_obj_table OF track_type 
    2 NESTED TABLE producers STORE AS producers_nt 
    3/

Table created. 

SQL> desc track_obj_table 
Name          Null? Type 
----------------------------------------- -------- ------------------------- 
TITLE            VARCHAR2(1000) 
DURATION           NUMBER(38) 
RELEASE_DATE          DATE 
PRODUCERS           ARTIST_TABLE_TYPE 

SQL> 
+0

很好,謝謝。我試過了,現在我得到了:「track_type的CREATE TABLE track_obj_table2 * 錯誤在第1行: ORA-00955:name已被現有對象使用」無論我怎麼說。 – Alex 2011-04-25 16:10:59

+0

虛驚一場,我在做NESTED TABLE製作商STORE AS的製作人。 – Alex 2011-04-25 17:37:41

相關問題