可以像给普遍表格插入数据一样
INSERT INTO OBJECT_TABLE VALUES (1,'测试对象表1',TO_DATE('20180101','YYYYMMDD'));也可以先将数据转成type类型再直接插入type数据
INSERT INTO OBJECT_TABLE VALUES (TYPE_OBJECT(2,'测试对象表2',TO_DATE('20180102','YYYYMMDD')));与普通表的查询一样
select * from OBJECT_TABLE也可以进行分页查询
select * from (select a.*, ROWNUM rn from (select * from OBJECT_TABLE) a where ROWNUM < 3) where rn > 1与普通表一样,对象表的列属性也可以在user_tab_columns视图中查到
select * from user_tab_columns where TABLE_NAME = 'OBJECT_TABLE'嵌套表是嵌套在其他表里面的,因此创建嵌套表时得有个被嵌套的表,在这里我称呼其为母表
创建一个type
CREATE OR REPLACE TYPE STRUCT_TYPE AS OBJECT( ID NUMBER, DETAIL VARCHAR2(100) )依据这个type再创建一个嵌套表类型(其中type可以为任何类型,包括varray 和 object ,通常object 居多。)
CREATE OR REPLACE TYPE STRUCT_TYPE_MUL AS TABLE OF STRUCT_TYPE使用该嵌套表类型,作为一个列嵌套到母表中
CREATE TABLE NESTED_TABLE ( ID NUMBER not null, NAME VARCHAR2(60), DETAIL_NESTED STRUCT_TYPE_MUL )NESTED TABLE DETAIL_NESTED STORE AS NESTED_TABLE_STORE;可以注意到建表语句尾部多了一句:NESTED TABLE DETAIL_NESTED STORE AS NESTED_TABLE_STORE,这是声明这个嵌套表类型的列为一个嵌套表,被声明的表为:NESTED_TABLE_STORE。该建表语句执行后,会创建两个表,一个为母表NESTED_TABLE,一个就是嵌套表NESTED_TABLE_STORE。
嵌套表是无法单独插入数据的,必须通过母表插入数据:
insert into NESTED_TABLE values (1, 'test', STRUCT_TYPE_MUL(STRUCT_TYPE(11,'北京'), STRUCT_TYPE(12, '上海')));其插入数据的方式与变长数组varray类似
嵌套表是无法单独查询数据的,强行查询会返回错误:ORA-22812:无法参考嵌套表列的存储表;只能通过母表查看数据
select * from NESTED_TABLE嵌套表的列数据无法在user_tab_columns中查到
嵌套表创建后在视图:user_nested_tables中存在记录
select * from user_nested_tables里面包含了嵌套表的基本属性