其中FACT_ELECTRIC是我的表名 此部分替換你自己的表名即可
SELECT
CASE
WHEN ROWNUM = 1 THEN
'FACT_ELECTRIC'
ELSE
''
END AS "表名",
table_info.*
FROM
(
SELECT
USER_TAB_COLS.COLUMN_NAME AS 列名,
USER_TAB_COLS.DATA_TYPE AS 數據類型,
USER_TAB_COLS.DATA_LENGTH AS 長度,
USER_TAB_COLS.NULLABLE AS 是否爲空,
CASE
WHEN (
SELECT
col.column_name
FROM
user_constraints con,
user_cons_columns col
WHERE
con.constraint_name = col.constraint_name
AND con.constraint_type = 'P'
AND col.table_name = 'FACT_ELECTRIC'
AND col.column_name = USER_TAB_COLS.COLUMN_NAME
) = USER_TAB_COLS.COLUMN_NAME THEN
'Y'
ELSE
'N'
END AS 是否主鍵,
CASE
WHEN (
SELECT
COUNT (*)
FROM
user_constraints con,
user_cons_columns col,
(
SELECT
t2.table_name,
t2.column_name,
t1.r_constraint_name
FROM
user_constraints t1,
user_cons_columns t2
WHERE
t1.r_constraint_name = t2.constraint_name
AND t1.table_name = 'FACT_ELECTRIC'
) r
WHERE
con.constraint_name = col.constraint_name
AND con.r_constraint_name = r.r_constraint_name
AND con.table_name = 'FACT_ELECTRIC'
AND col.column_name = USER_TAB_COLS.COLUMN_NAME
) > 0 THEN
'Y'
ELSE
'N'
END AS 是否外鍵,
user_col_comments.comments AS 備註
FROM
USER_TAB_COLS
INNER JOIN user_col_comments ON user_col_comments.TABLE_NAME = USER_TAB_COLS.TABLE_NAME
AND user_col_comments.COLUMN_NAME = USER_TAB_COLS.COLUMN_NAME
AND USER_TAB_COLS.TABLE_NAME = 'FACT_ELECTRIC'
ORDER BY
USER_TAB_COLS.COLUMN_ID
) table_info;
運行效果(我用的是navicat for oracle工具,支持將查詢結果導出爲excel文件或html文件等)