2017-02-27 4 views
0

사용자 정의보기 만 나열 할 수있는 방법이 있습니까? MSSQL에서 jdbc의 DatabaseMetadata의 getTables() 함수를 사용하여 테이블과 뷰를 나열하려고하면 모든 뷰가 표시됩니다. 그러나 결과 세트에 시스템 뷰가 필요하지 않습니다.데이터베이스에서 사용자 정의보기를 나열하십시오.

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

이것은 메타 데이터를 추출하는 데 사용하는 코드입니다. 누구든지이 문제를 해결하도록 도와 줄 수 있습니까?

당신은 SELECT 전화와 직접 데이터베이스를 요청하고 결과를 분석 할 수

답변

2

:

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

[type]='V'VIEW의 필터링하고 is_ms_shipped=0는 (MS에서 설치되지 않은) 사용자에 의해 생성 된 개체에 대한 필터링됩니다

Find details here

+0

MSSQL에서만 작동합니까? – abubakkar

+2

@abubakkar -'VIEW_NAME에서 [INFORMATION_SCHEMA]. [VIEWS] SELECT TABLE_NAME을 (를) 다소 이식성이있을 수 있습니다. –

0

당신은 고려 스키마를 가지고해야합니다. MS SQL의 기본 스키마는 dbo입니다. 따라서 메타 데이터에 전화가 있어야한다 :

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

또는 당신은 다음

dmd.getSchemas(dbName,"%"); 

그리고 루프의 모든 '작업'스키마에 의해 전에 모든 스키마를 얻을.

+0

그것은 MySQL과 오라클에서 작동합니까? – abubakkar

+0

예. 단, 기본 스키마의 이름이 다를 수 있습니다. –

+0

MySQL 스키마에는 데이터베이스에 포함되어 있기 때문에 공통적 인 스키마가 아닙니다. 따라서 MySQL의 스키마 이름으로 '%'만 사용하십시오. –

관련 문제