반응형
WITH CONS_COL AS (
SELECT C.OWNER
, C.TABLE_NAME
, C.CONSTRAINT_TYPE
, C.CONSTRAINT_NAME
, D.COLUMN_NAME
, 'Y' FG
FROM ALL_CONSTRAINTS C
, ALL_CONS_COLUMNS D
WHERE C.OWNER=D.OWNER
AND C.TABLE_NAME=D.TABLE_NAME
AND C.CONSTRAINT_NAME=D.CONSTRAINT_NAME
AND C.CONSTRAINT_TYPE IN('P','R')
)
SELECT A.OWNER
, E.COMMENTS ENTITY_NAME
, A.TABLE_NAME
, B.COMMENTS ATTRIBUTE_NAME
, A.COLUMN_NAME
, C.FG PK_YN
, D.FG FK_YN
, DECODE(NULLABLE,'N','Y') NOTNULL_YN
, DECODE(DATA_TYPE,'TIMESTAMP(6)','TIMESTAMP', DATA_TYPE) DATA_TYPE, COLUMN_ID+1
, CASE WHEN DATA_TYPE ='NUMBER' AND DATA_PRECISION > 0 THEN DATA_PRECISION
WHEN DATA_TYPE IN('VARCHAR','VARCHAR2','CHAR','NCHAR','NVARCHAR') THEN DATA_LENGTH
END AS DATA_LENGTH
, CASE WHEN DATA_TYPE ='NUMBER' AND DATA_PRECISION > 0 AND DATA_SCALE > 0 THEN DATA_SCALE END DATA_SCALE
, DATA_DEFAULT
FROM ALL_TAB_COLUMNS A
, ALL_COL_COMMENTS B
, CONS_COL C
, CONS_COL D
, ALL_TAB_COMMENTS E
WHERE A.OWNER=B.OWNER AND A.TABLE_NAME=B.TABLE_NAME AND A.COLUMN_NAME=B.COLUMN_NAME
AND A.OWNER=E.OWNER AND A.TABLE_NAME=E.TABLE_NAME
AND A.OWNER=C.OWNER(+) AND A.TABLE_NAME=C.TABLE_NAME(+) AND C.CONSTRAINT_TYPE(+) ='P'
AND A.COLUMN_NAME=C.COLUMN_NAME(+)
AND A.OWNER=D.OWNER(+) AND A.TABLE_NAME=D.TABLE_NAME(+) AND D.CONSTRAINT_TYPE(+) ='R'
AND A.COLUMN_NAME=D.COLUMN_NAME(+)
ORDER BY A.OWNER
, A.TABLE_NAME
, A.COLUMN_ID
반응형
'DB' 카테고리의 다른 글
[오라클] sql 파일 직접 실행하기 (0) | 2024.08.20 |
---|---|
[오라클, 티베로] DB 제약조건 조회하기 (0) | 2024.08.20 |
[오라클] IN절 1000개 이상인 경우 처리 방법 - ORA-01795 (0) | 2024.08.20 |