Oracle Table / Column 정보 조회 Query

오라클 테이블 / 컬럼 정보 조회 쿼리...


숫자형의 경우 Length 컬럼을 조회하면 다 동일하게 나온다.


그래서 정수부분과 소수 부분을 따로 합해줘야 한다.



    SELECT  A.TABLE_NAME            AS "TABLE_NAME"

            , (SELECT COMMENTS FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = A.TABLE_NAME) AS "TABLE_COMMENT"

            , A.COLUMN_NAME         AS "COLUMN_NAME"

            , D.COMMENTS            AS "COLUMN_COMMENT"

            , A.DATA_TYPE           AS "DATA_TYPE"

            , CASE WHEN A.DATA_TYPE = 'NUMBER' THEN   A.DATA_PRECISION || ',' || A.DATA_SCALE        

                   ELSE TO_CHAR(A.DATA_LENGTH) END AS "LENGTH"

            , A.NULLABLE            AS "NULLABLE"

            , CASE WHEN C.CONSTRAINT_TYPE = 'P' THEN 'Y' ELSE 'N' END AS "PRIMARY_KEY"

            

      FROM  DBA_TAB_COLUMNS     A

         ,  DBA_IND_COLUMNS     B

         ,  DBA_CONSTRAINTS     C

         ,  DBA_COL_COMMENTS    D

         

     WHERE  1 = 1


       AND  A.OWNER = B.TABLE_OWNER(+)

       AND  A.TABLE_NAME  = B.TABLE_NAME(+)

       AND  A.COLUMN_NAME = B.COLUMN_NAME(+)

       

       AND  A.OWNER = C.OWNER(+)

       AND  A.TABLE_NAME = C.TABLE_NAME (+)

       AND  B.INDEX_NAME = C.INDEX_NAME (+)

       

       AND  A.OWNER = D.OWNER (+)

       AND  A.TABLE_NAME = D.TABLE_NAME (+)

       AND  A.COLUMN_NAME = D.COLUMN_NAME (+)

       

       AND  A.TABLE_NAME = '테이블명'


  ORDER BY  A.TABLE_NAME, A.COLUMN_ID