ORACLE TABLE 레이아웃 조회 SQL
-- 테이블 조회 SQL
SELECT A.TABLE_NAME
, A.COMMENTS
, B.COLUMN_NAME
, B.DATA_TYPE ||
(CASE WHEN B.DATA_TYPE IN ('CHAR', 'VARCHAR2', 'NVARCHAR') THEN '(' || B.DATA_LENGTH || ')'
WHEN B.DATA_TYPE = 'NUMBER' AND B.DATA_SCALE = 0 AND B.DATA_PRECISION IS NOT NULL THEN '(' || B.DATA_PRECISION || ')'
WHEN B.DATA_TYPE = 'NUMBER' AND B.DATA_SCALE <> 0 THEN '(' || B.DATA_PRECISION || ',' || B.DATA_SCALE || ')' END
) AS DATA_TYPE
,DECODE(B.NULLABLE, 'Y', 'N', 'N', 'Y') AS NOTNULL
,C.COMMENTS
, CASE WHEN E.COLUMN_POSITION IS NOT NULL THEN 'PK' ELSE '' END AS PRIMARY_KY
, E.COLUMN_POSITION
FROM user_tab_comments A
, USER_TAB_COLS B
, USER_COL_COMMENTS C
, user_constraints D
, USER_IND_COLUMNS E
WHERE A.TABLE_NAME = B.TABLE_NAME
AND B.TABLE_NAME = C.TABLE_NAME
AND B.COLUMN_NAME = C.COLUMN_NAME
AND A.TABLE_NAME = D.TABLE_NAME
AND D.CONSTRAINT_TYPE ='P'
AND D.CONSTRAINT_NAME = E.INDEX_NAME(+)
AND B.TABLE_NAME = E.TABLE_NAME(+)
AND B.COLUMN_NAME = E.COLUMN_NAME(+)
--AND A.TABLE_NAME='BM_COMM_CLSS_CD'
ORDER BY A.TABLE_NAME, B.COLUMN_ID;