2012-11-08 82 views
4

信息,我有兩個用戶類型:獲取有關集合元素類型

create type TEST_TYPE_WITH_CHAR as table of varchar2(100 char); 
create type TEST_TYPE_WITH_BYTE as table of varchar2(100 byte); 

如何確定什麼類型包含字符,並且字節?

查看SYS.USER_COLL_TYPES不提供此類信息。 sqlfiddle

回答

2

看一看all_coll_types視圖。 Char_used柱,它告訴你是否varchar2元件的長度以字節或字符指定只存在有:

SQL> create type t_coll_type is table of varchar2(10 byte); 
    2/

Type created 

SQL> 
SQL> select type_name 
    2  , elem_type_name 
    3  , char_used 
    4 from all_coll_types 
    5 where type_name = 'T_COLL_TYPE' 
    6 ; 

TYPE_NAME      ELEM_TYPE_NAME     CHAR_USED 
------------------------------ ------------------------------ --------- 
T_COLL_TYPE     VARCHAR2      B 

SQL> create type t_coll_type2 is table of varchar2(10 char); 
    2/

Type created 

SQL> 
SQL> select type_name 
    2  , elem_type_name 
    3  , char_used 
    4 from all_coll_types 
    5 where type_name = 'T_COLL_TYPE2' 
    6 ; 

TYPE_NAME      ELEM_TYPE_NAME     CHAR_USED 
------------------------------ ------------------------------ --------- 
T_COLL_TYPE2     VARCHAR2      C 
+0

哇,不同結構對用戶_ *和ALL_ *圖。我一直認爲它們是相同的 – turbanoff