WITH TEMP AS (
SELECT
DISTINCT
AC.COLUMN_NAME
FROM
SYS.ALL_CONS_COLUMNS AC,
SYS.ALL_CONSTRAINTS AU
WHERE
AC.CONSTRAINT_NAME = AU.CONSTRAINT_NAME
AND AC.OWNER = 'TEST'
AND AU.CONSTRAINT_TYPE = 'P'
),
TEMP2 AS (
SELECT
A.TABLE_NAME,
A.COLUMN_NAME,
A.DATA_TYPE,
( CASE WHEN A.DATA_TYPE = 'NUMBER' THEN NVL( A.DATA_PRECISION, 0 ) ELSE A.DATA_LENGTH END ) AS DATA_LENGTH,
A.NULLABLE,
B.COMMENTS
FROM
SYS.ALL_TAB_COLUMNS A,
SYS.ALL_COL_COMMENTS B
WHERE
A.OWNER = B.OWNER
AND A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME
AND A.OWNER = 'TEST'
AND A.GLOBAL_STATS = 'YES'
ORDER BY
A.TABLE_NAME,
A.COLUMN_NAME
)
SELECT
A.TABLE_NAME,
C.COMMENTS AS TABLE_COMMENTS,
A.COLUMN_NAME,
A.DATA_TYPE,
A.DATA_LENGTH,
A.NULLABLE,
NVL2(P.COLUMN_NAME,1, 0) AS KEY,
A.COMMENTS
FROM
TEMP2 A
LEFT JOIN TEMP P ON A.COLUMN_NAME = P.COLUMN_NAME
LEFT JOIN SYS.ALL_TAB_COMMENTS C ON C.TABLE_NAME = A.TABLE_NAME AND C.OWNER = 'TEST'
ORDER BY
A.TABLE_NAME,
A.COLUMN_NAME
Oracle根据表字段导出数据字典
最新推荐文章于 2023-03-14 17:42:29 发布