簡體   English   中英

使用主鍵獲取 Oracle 元數據

[英]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_CONSTRAINTSALL_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM