DATA_TYPE이 NUMBER인 경우 DATA_PRECISION 와 DATA_SCALE 을 확인해야 합니다.

DATA_SCALE 이 0인 경우 INTEGER로 간주할 수 있습니다.

 

· DATA_PRECISION : 전체 자릿수 (최대 38 자릿수)

· DATA_SCALE : 소수점 자리수

SELECT  A.TABLE_NAME
     ,  A.COLUMN_ID
     ,  A.COLUMN_NAME
     ,  B.COMMENTS
     ,  DATA_TYPE
     , (CASE WHEN DATA_TYPE LIKE '%CHAR%' THEN DATA_LENGTH||''
             WHEN DATA_TYPE = 'NUMBER' AND DATA_PRECISION > 0 AND DATA_SCALE > 0 THEN DATA_PRECISION||','||DATA_SCALE
             WHEN DATA_TYPE = 'NUMBER' AND DATA_PRECISION > 0 THEN DATA_PRECISION||''
         END) AS DATA_LENGTH
     ,  DECODE(A.NULLABLE, 'N', '', 'O') AS NULLABLE
  FROM  ALL_TAB_COLUMNS A
 INNER
  JOIN  ALL_COL_COMMENTS B
    ON  A.OWNER       = B.OWNER
   AND  A.TABLE_NAME  = B.TABLE_NAME
   AND  A.COLUMN_NAME = B.COLUMN_NAME
 WHERE  A.OWNER       = [스키마명]
   AND  A.TABLE_NAME  = UPPER([테이블명]);

 

[References]

http://www.gurubee.net/article/68709

 

ALL_TAB_COLUMNS 테이블 DATA_TYPE 질문이요

TBL_A 라는 테이블이 있고 COL_A라는 컬럼이 있습니다.   토드에서 테이블스키마를 보면 컬럼 타입이 INTEGER로 나오는데요 ALL_TAB_COLUMNS ..

www.gurubee.net

 

728x90

+ Recent posts