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
的含义?并没有找到任何解释。
感谢任何帮助。
答案 0 :(得分: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);