[英]Get Oracle Metadata with Primary Key
有人可以幫助我 Oracle 訪問這些數據元素和主鍵定義嗎?
我想要的只是提供給這個查詢的表的不同定義
SELECT TotalColumn.*
FROM
(SELECT FirstLevel.*
--,NULL AS CONSTRAINT_TYPE
,'ORACLE' AS DB_Source_Name
FROM (SELECT
A.COLUMN_NAME ,
A.DATA_TYPE ,
A.DATA_LENGTH ,
A.NULLABLE ,
A.COLUMN_ID
A.DATA_PRECISION ,
A.DATA_SCALE
--(I want to add contraint CONSTRAINT_NAME)
FROM ALL_TAB_COLUMNS A
where A.OWNER ='SCHEMA_NAME'AND A.TABLE_NAME = 'TABLE_NAME'
) FirstLevel
) TotalColumn
ORDER BY ORDINAL_POSITION
堆棧.imgur.com/vEfpy.png
您可以使用ALL_CONSTRAINTS
和ALL_CONS_COLUMNS
來獲取約束信息。
以下是將為您提供列的主鍵名稱的查詢。 您還可以使用這些表格來獲得任何類型的結果。
SELECT
A.COLUMN_NAME,
A.DATA_TYPE,
A.DATA_LENGTH,
A.NULLABLE,
A.COLUMN_ID,
A.DATA_PRECISION,
A.DATA_SCALE,
CASE
WHEN AC.CONSTRAINT_TYPE = 'P' THEN ACC.CONSTRAINT_NAME
END PRIMARY_KEY_CONS_NAME,
--(I want to add contraint CONSTRAINT_NAME)
'ORACLE' AS DB_SOURCE_NAME
FROM
ALL_TAB_COLUMNS A
LEFT JOIN ALL_CONS_COLUMNS ACC ON A.COLUMN_NAME = ACC.COLUMN_NAME
AND A.TABLE_NAME = ACC.TABLE_NAME
AND A.OWNER = ACC.OWNER
LEFT JOIN ALL_CONSTRAINTS AC ON AC.CONSTRAINT_NAME = ACC.CONSTRAINT_NAME
AND AC.OWNER = ACC.OWNER
WHERE
A.OWNER = 'SCHEMA_NAME'
AND A.TABLE_NAME = 'TABLE_NAME'
ORDER BY
A.COLUMN_ID;
唯一涉及的表(實際上是一個視圖)是 ALL_TAB_COLUMNS。 它記錄在數據庫參考手冊中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.