2016-10-16 147 views
0
CREATE TYPE nums_list AS TABLE OF NUMBER; 

    CREATE TABLE mytest (
     id NUMBER, 
     num NUMBER, 
     tagged nums_list 
    ) 
    NESTED TABLE tagged STORE AS mytest_tagged_table; 

現在我需要在tagged嵌套表列創建索引。在嵌套表列創建索引

所以根據documentation,語法是這樣的:

CREATE INDEX index_name 
ON nested_storage_table(NESTED_TABLE_ID, document_typ); 

我不明白什麼意思的第二個參數document_typ?並沒有找到任何解釋。

任何幫助表示讚賞。

回答

1

這是Oracle文檔不同步的有趣示例。索引示例應該包括類型的定義。但是,我們可以在the PL/SQL reference中找到這些示例。所以PRINT_MEDIA.AD_TEXTDOCS_NTAB是類型TEXTDOC_TAB具有這種簽名的:

CREATE TYPE textdoc_typ AS OBJECT 
    (document_typ  VARCHAR2(32) 
    , formatted_doc  BLOB 
    ) ; 

CREATE TYPE textdoc_tab AS TABLE OF textdoc_typ; 

所以,document_typ是在用戶定義類型某種形式的元數據列的。由於您定義集合類型的方式,您的案例中沒有與此列等值的內容:它沒有要命名的列。

如果不理解爲什麼要使用嵌套表,以及爲什麼認爲需要索引,很難給出明確的解決方案。然而,這可能適合你:

CREATE OR REPLACE TYPE num_t AS OBJECT (numcol NUMBER); 

CREATE OR REPLACE TYPE nums_list AS TABLE OF num_t; 

所以,你可以再建你的桌子上的嵌套存儲的索引:

CREATE INDEX index_name 
    ON nested_storage_table(NESTED_TABLE_ID, numcol);