巢狀表的測試(一)

newknight發表於2013-11-28

近期在使用程式碼設計中涉及到了巢狀表的使用,使用過程中發現一次取資料,無法完全顯示所有的欄位內容。

整個測試過程如下:

建立測試表:

–建立相關type

create type mc$column_obj_type1 is object( column_source varchar2(30),
                                           column_name   varchar2(30));
create type mc$column_tab_type1 is table of mc$column_obj_type1;

–建立巢狀表

create table mc$etl_reference ( id         number,
                                column_map mc$column_tab_type1)
nested table column_map store as mc$column_map1;

–插入測試資料

insert into mc$etl_reference values ( 1,
                                      mc$column_tab_type1(mc$column_obj_type1('a','b'),
                                                          mc$column_obj_type1('c','d')));
insert into mc$etl_reference values ( 2,
                                      mc$column_tab_type1(mc$column_obj_type1('e','f'),
                                                          mc$column_obj_type1('g','h')));
insert into mc$etl_reference values ( 3,
                                      mc$column_tab_type1(mc$column_obj_type1('e1','f1'),
                                                          mc$column_obj_type1('g1','h1'),
                                                          mc$column_obj_type1('A1','C1')));

commit;

–顯示錶格資料

SQL> select * from mc$etl_reference;
 
        ID COLUMN_MAP
———- ———-
         1
         2
         3

可見,一次查詢無法顯示所需資料。

 

那麼換種思路,直接加入對巢狀表的查詢:

SQL> select e.id, c.* from mc$etl_reference e, table(e.column_map) c;
 
        ID COLUMN_SOURCE                  COLUMN_NAME
———- —————————— ——————————
         1 a                              b
         1 c                              d
         2 e                              f
         2 g                              h
         3 e1                             f1
         3 g1                             h1
         3 A1                             C1

 
7 rows selected

檢查之後發現資料顯示正常。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10009036/viewspace-1061455/,如需轉載,請註明出處,否則將追究法律責任。

相關文章