首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle Metadata 結構描述集合完整參考

     編輯:Oracle 教學

Oracle Metadata 結構描述集合完整參考

ADO.NET GetSchema() 方法透過結構描述集合 (Schema Collections) 取得資料庫中繼資料。Oracle (dotConnect for Oracle) 支援標準集合與 Oracle 專屬集合,本文整理所有集合名稱、限制條件數量與用途說明。

GetSchema 多載與限制條件

// 無參數:取得所有可用集合清單
DataTable collections = conn.GetSchema();

// 單一參數:取得指定集合所有資料
DataTable tables = conn.GetSchema("Tables");

// 兩個參數:集合名稱 + 限制條件陣列
// restrictions 陣列長度 <= 集合定義的限制數量
// null 表示不套用該層限制
DataTable cols = conn.GetSchema("Columns", new string[] { "SCOTT", "EMP", null });
// 等同:SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER='SCOTT' AND TABLE_NAME='EMP'

標準結構描述集合完整表

集合名稱限制數說明限制欄位順序
MetaDataCollections0所有可用集合清單-
ReservedWords0保留字清單-
Users1資料庫用戶Username
Tables2資料表/視圖Owner, TableName
Views2視圖Owner, ViewName
Columns3欄位定義Owner, TableName, ColumnName
Indexes4索引定義Owner, IndexName, TableName, TableOwner
IndexColumns5索引包含欄位IndexOwner, IndexName, TableOwner, TableName, ColumnName
Functions2函數Owner, FunctionName
Procedures3預存程序Owner, PackageName, ProcedureName
Arguments4程序/函數參數Owner, PackageName, ProcedureName, ArgumentName
Synonyms2同義詞Owner, SynonymName
Sequences2序列Owner, SequenceName
Packages2套件規格Owner, PackageName
PackageBodies2套件主體Owner, PackageName
ForeignKeys3外鍵約束Owner, KeyName, TableName
ForeignKeyColumns3外鍵欄位Owner, KeyName, TableName
Triggers2觸發器Owner, TriggerName
Clusters2叢集Owner, ClusterName

Oracle 專屬集合 (dotConnect 擴充)

集合名稱限制數說明
Tablespaces1表空間,限制:TablespaceName
DataFiles1資料檔案,限制:TablespaceName
RollbackSegments1回滾段,限制:SegmentName
RedoLogs0重做日誌組
ControlFiles0控制檔案
Parameters1初始化參數,限制:ParameterName
Sessions0當前會話
Locks0當前鎖定
Dependencies3物件相依性,限制:Owner, Name, Type
XMLSchemas2XML Schema,限制:Owner, SchemaName

實用查詢範例

// 取得 SCOTT 綱要下所有資料表
var tables = conn.GetSchema("Tables", new[] { "SCOTT", null });

// 取得 EMP 表所有欄位
var cols = conn.GetSchema("Columns", new[] { "SCOTT", "EMP", null });

// 取得特定索引包含欄位
var idxCols = conn.GetSchema("IndexColumns", new[] { "SCOTT", "PK_EMP", "SCOTT", "EMP", null });

// 取得所有序列
var seqs = conn.GetSchema("Sequences", new[] { "SCOTT", null });

// 取得套件與主體
var pkgs = conn.GetSchema("Packages", new[] { "SCOTT", null });
var pkgsBody = conn.GetSchema("PackageBodies", new[] { "SCOTT", null });

注意事項

  • 大小寫敏感:Oracle 資料字典儲存為大寫,限制值建議轉大寫
  • 不支援萬用字元:限制值必須精確匹配,不支援 % 或 _
  • 效能考量:無限制查詢大型綱要會很慢,務必指定 Owner
  • 權限需求:需 SELECT_CATALOG_ROLE 或對應字典視圖查詢權限

對應資料字典視圖

集合主要資料字典視圖
TablesALL_TABLES, USER_TABLES, DBA_TABLES
ColumnsALL_TAB_COLUMNS, USER_TAB_COLUMNS
IndexesALL_INDEXES, USER_INDEXES
ProceduresALL_PROCEDURES, USER_PROCEDURES
ArgumentsALL_ARGUMENTS, USER_ARGUMENTS
SynonymsALL_SYNONYMS, USER_SYNONYMS
SequencesALL_SEQUENCES, USER_SEQUENCES
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved