Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Список таблиц в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
6-72425
LeReve
2002-11-22 22:08
2003.01.23
Как изменить время ожидания финкции Connect???


3-72128
intLex
2003-01-01 05:33
2003.01.23
Нужна БД


14-72525
VJar
2003-01-05 11:30
2003.01.23
Параметр отладчика


3-72122
Alister
2002-12-31 02:46
2003.01.23
Как подключить Внешнюю компоненту 1С к своей DLL


4-72578
Sergei
2002-12-06 16:52
2003.01.23
Добавление Control В Диалоговое меню