Как получить ссылки VIEW (базовые таблицы) через JDBC? - PullRequest
3 голосов
/ 29 ноября 2011

Когда я создаю VIEW, ядро ​​базы данных приостанавливает мой запрос и сохраняет его как угодно.Могу ли я тогда узнать, какие таблицы используются одним представлением?Я понимаю, что разные базы данных могут быть по-разному.Может иметь какой-то уровень броска абстракции JDBC.

Что-то подсказывает мне, что это делается через getTables (?):

Connection con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);        
DatabaseMetaData md = con.getMetaData();
md.getTables(null, null, null, null);

Если этого не может быть.Есть ли решение, в частности, для базы данных Oracle (например, view / referenses в plsql developer)?

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011

РЕДАКТИРОВАТЬ : Неважно, неправильно прочитал вопрос: я думал, что вы хотите получить сами представления.

Насколько мне известно, не существует специального способа получения этой информации в JDBC: вам нужно будет погрузиться в системные таблицы вашей базы данных и посмотреть, доступна ли эта информация.

В ответе ниже указано, как получить представление, а не ответ на вопрос:

DatabaseMetaData # getTables () с типом "VIEW"

например

dmd.getTables(catalog, schema, "%", new String[] {"VIEW"});
3 голосов
/ 29 ноября 2011

Oracle:

Select * from dictionary 

Возвращает множество системных таблиц / функций, к которым у вас есть доступ, которые содержат ценную информацию о структуре.

в этом списке вы увидите

Select * from ALL_Views (который содержит исходный SQL для представления), который может быть проанализирован для имен таблиц.

Хотя я думаю, что есть представление all_Dependencies или all_References, которое будет содержать обязательные ссылки на таблицы в отдельных полях, которые было бы легче проанализировать, я ищу это сейчас ...

Select * from All_dependencies WHERE Name = 'YOUR_VIEWNAME' and Referenced_Type='TABLE' вернет все ссылочные таблицы.

Хотя я не уверен, как эти функции работают со связанными таблицами. так что если вы ссылаетесь на внешние таблицы через связанный сервер ... эти функции могут не работать.

...