Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
ВнизСписок таблиц в IB Найти похожие ветки
← →
Vlad_T (2002-12-28 12:17) [0]Подскажите способ получения списка существующих таблиц в базе данных.
← →
passm (2002-12-28 12:24) [1]Vlad_T (28.12.02 12:17)> Ищи с системных таблицах.
В Rx Library есть DB Explorer. Там можно посмотреть список. Работает даже под DB2.
← →
Vlad_T (2002-12-28 12:30) [2]Уточняю - в IB можно получить подобную информация из системных таблиц (RDB$....) с помощью SQL запроса. Беда в том, что не помню имя системной таблицы!!!
← →
myor (2002-12-28 12:41) [3]
> Уточняю - в IB можно получить подобную информация из системных
> таблиц (RDB$....) с помощью SQL запроса. Беда в том, что
> не помню имя системной таблицы!!!
наверняка не знаю, но подозреваю, что что-то вроде rdb$tables
← →
Vlad_T (2002-12-28 12:52) [4]Единственное что сработало - запрос к RDB$USER_PRIVILEGES на предмет доступных таблиц для редактирования пользователя SYSDBA. Изврат редкостный, но работает! Единственная проблема: если изменят логин админа?
Может кто-то знает как сделать красивее??
← →
Mike_Goblin (2002-12-28 13:31) [5]TIBDatabase.GetTableNames
procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);
Description
Call GetTableNames to retrieve a list of tables in the associated database.
Хотя за корректность ее работы не ручаюсь
← →
Vlad_T (2002-12-28 13:32) [6]Все, разобрался.
Если кому итерестно, привожу процедуту получения списка таблиц в IB: // удобнее хранить прямо на сервере :)
CREATE VIEW VIEW_TABLE_NAME (
TABLE_NAME
) AS
SELECT DISTINCT RDB$relation_name as table_name from RDB$USER_PRIVILEGES
WHERE not (RDB$relation_name like "RDB$") and (RDB$Object_type=0) and (RDB$relation_name<>"RDB$ROLES")
← →
myor (2002-12-29 11:22) [7]
> Vlad_T (28.12.02 13:32)
> Все, разобрался. и далее...
тогда поищи таблицу rdb$user_tables или rdb$dba_tables
повторюсь, на счет ib не уверен, а, по аналогии с oracle,
если в ib есть RDB$USER_PRIVILEGES и т. д., то должны быть и rdb$user_tables, rdb$user_rules и т. д..
← →
Сергєєв Володимир (2002-12-29 22:20) [8]Как все сложно....
Если хочешь сделать все правильно - смотри совет Vlad_T - все имена таблиц базы данных (а также просмотров) лежат в RDB$REALATION.
Ну, а вообще, если коннектишся к базе с правами SYSDBA, и если у тя есть хоть один IBTable с Active := TRUE, то в TableNames[i] - список всех таблиц базы. Но при этом посмотри внимательно флаги, не помню точно, там есть что-то вроде множества
[tables, views, systemdata], которое определяет включать ли в TableNames[i] таблицы, просмотры и RDB$...
← →
Sergey Masloff (2002-12-29 23:28) [9]Vlad_T
>CREATE VIEW VIEW_TABLE_NAME (
> TABLE_NAME
>) AS
>SELECT DISTINCT RDB$relation_name as table_name from >RDB$USER_PRIVILEGES
>WHERE not (RDB$relation_name like "RDB$")
Это ты откидываешь системные объекты...
>and (RDB$Object_type=0)
а это отбираются только таблицы (а, непример, не ХП)
>and (RDB$relation_name<>"RDB$ROLES")
это непонятно зачем...
А если так:
select rdb$relation_name from rdb$relations where rdb$system_flag = 0
и никаких DISTINCT которые есть тормоза по сути своей ;-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c