2017-02-27 57 views
0

是否有方法單獨列出用戶定義的視圖。在MSSQL中,當我嘗試使用jdbc的DatabaseMetadata的getTables()函數列出表和視圖時,它顯示了所有視圖。但是我不需要系統視圖進入我的結果集。從數據庫中列出用戶定義的視圖

DatabaseMetadata dmd = connection.getMetaData(); 
tablesResultSet= dmd.getTables(dbName, null, null, new String[] { "TABLE", "VIEW" }); 

這是我用來提取元數據的代碼。任何人都可以幫我解決這個問題嗎?

回答

2

你可能有SELECT電話直接查詢數據庫,並分析結果:

SELECT * FROM sys.objects WHERE [type]='V' AND is_ms_shipped=0 

[type]='V'將篩選VIEW S和is_ms_shipped=0將篩選出這是由用戶創建的(不是從MS安裝)對象

Find details here

+0

它只適用於MSSQL嗎? – abubakkar

+2

@abubakkar - 'SELECT TABLE_NAME AS VIEW_NAME FROM [INFORMATION_SCHEMA]。[VIEWS]'可能會更便於攜帶。 –

0

您必須考慮架構。 MS SQL上的默認模式是dbo。所以,你的元數據調用應該是:

DatabaseMetadata dmd = connection.getMetaData(); 
tablesResultSet= dmd.getTables(dbName, "dbo", null, new String[] { "VIEW" }); 

或者你通過

dmd.getSchemas(dbName,"%"); 

然後循環所有的「工作」模式之前獲得的所有模式。

+0

它會爲mysql和oracle工作嗎? – abubakkar

+0

是的,但默認模式可能具有不同的名稱。 –

+0

在MySQL架構中並不常見,因爲它包含在數據庫中。所以你在MySQL中只使用'%'作爲模式名稱。 –

相關問題