表为TEST001,但是用desc查询和从User_Tab_Cols查询的结果不一样,求解释,查询结果如下图:
SQL> desc test001
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 PROCESS                                            VARCHAR2(20 CHAR)
 CONNECTION                                         VARCHAR2(20 CHAR)
 MARK                                               CHAR(1)
 FLAG                                               CHAR(1)SELECT column_name, data_length, data_type, table_name
  FROM User_tab_cols
 WHERE table_name = UPPER ('test001');COLUMN_NAME DATA_LENGTH DATA_TYPE TABLE_NAME 
ID          22          NUMBER    TEST001 
PROCESS     40          VARCHAR2  TEST001 
CONNECTION  40          VARCHAR2  TEST001 
MARK        1           CHAR      TEST001 
FLAG        1           CHAR      TEST001 

解决方案 »

  1.   

    data_length字段只适合非数字类型的,number类型的请查询Data_Precision和Data_scale。
      

  2.   


    你本来定义就是这样的:ID NOT NULL NUMBER
      

  3.   

    那我想查这个NUMBER字段的长度怎么办呢?还是得看DATA_LENGTH吗?
      

  4.   

    跟你说了,number类型的请查询Data_Precision和Data_scale。这两个是number长度的整数和小数位数
    你查询出来是空的,说明你建表时候对ID 就是建的NUMBER型,没指定精度而已!
    不信你试试:
    create table test(id number(10,2) not null);用desc test和查询Data_Precision和Data_scale,看看精度是不是一致的