Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать тип поля? [D7, XP]


ixen ©   (2011-07-22 11:58:00) 

Можно ли узнать тип поля таблицы используя только SQL запрос? СУБД Firebird.


Loginov Dmitry   (2011-07-22 20:34:00) [1]


> или в Firebird по другому?


Разработчики Firebird не переворачивают с ног наголову системные таблицы от версии к версии, поэтому использование системных таблиц, разумеется в меру, это нормальная практика. Плюс к тому не нужно каждый раз переучиваться.
Системные таблицы для FB - это азы ;)
К примеру, то, что в MS SQL делается так:
SELECT 'hello'
в FB делается с использованием системной таблицы RDB$DATABASE:
SELECT 'hello' FROM RDB$DATABASE
Я бы не стал называть это преимуществом или недостатком, так уж повелось исторически. Однако кардинально менять сложившиеся вещи - тоже нехорошо.


sniknik   (2011-07-22 16:24:00) [2]

> У них пробовали SQL-ом получать интересующие данные такого рода?
в ado OpenSchema получает у всех одинаково, каким образом реализуется в провайдере конкретной не особо интересует

> И как, запросы были идентичные?"
в mssql как раз на этом основании и рекомендуют... правда о идентичности "междубазовой" речь не идет, а идет о "межверсионной", типа от версии к версии системные таблицы могут меняться, а вот схемы нет.


Игорь Шевченко   (2011-07-22 15:55:00) [3]

sniknik ©   (22.07.11 15:11) [7]

"Вы хотя бы с двумя разными СУБД работали? У них пробовали SQL-ом получать интересующие данные такого рода? И как, запросы были идентичные?"

http://www.sql.ru/forum/actualthread.aspx?bid=2&tid=521448&pg=1


sniknik   (2011-07-22 15:11:00) [4]

вообще рекомендуют пользоваться INFORMATION_SCHEMA, а не лезть в системные таблицы. или в Firebird по другому?


ixen   (2011-07-22 13:41:00) [5]

нашел решение

SELECT RDB$RELATIONS.RDB$RELATION_NAME,
      RDB$RELATION_FIELDS.RDB$FIELD_NAME,
      RDB$RELATION_FIELDS.RDB$FIELD_POSITION,
      RDB$RELATION_FIELDS.RDB$FIELD_SOURCE,
      RDB$RELATION_FIELDS.RDB$NULL_FLAG,
      RDB$RELATION_FIELDS.RDB$DEFAULT_SOURCE,
      RDB$FIELDS.RDB$COMPUTED_SOURCE, RDB$FIELDS.RDB$DEFAULT_SOURCE,
      RDB$FIELDS.RDB$FIELD_TYPE, RDB$FIELDS.RDB$NULL_FLAG
FROM RDB$RELATIONS
INNER JOIN RDB$RELATION_FIELDS ON
     (RDB$RELATIONS.RDB$RELATION_NAME = RDB$RELATION_FIELDS.RDB$RELATION_NAME)
INNER JOIN RDB$FIELDS ON
     (RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME)
WHERE
((RDB$RELATIONS.RDB$SYSTEM_FLAG = 0)
and
(RDB$RELATIONS.RDB$VIEW_SOURCE IS NULL))
ORDER BY RDB$RELATIONS.RDB$RELATION_NAME, RDB$RELATION_FIELDS.RDB$FIELD_POSITION;


всем спасибо за помощь


sniknik   (2011-07-22 13:32:00) [6]

http://www.google.ru/search?q=INFORMATION_SCHEMA+Firebird+&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox


ixen   (2011-07-22 13:07:00) [7]

вот допустим нет делфи.. только IBExpert,фаерберд сервер и база ... вот нужно в нем выполнить sql запрос который выводит информацию о запрашиваемом поле...


Anatoly Podgoretsky   (2011-07-22 12:56:00) [8]

Наверно тип TField у FireBird, тогда элементарно.


ixen   (2011-07-22 12:50:00) [9]

Спасибо!


Сергей М.   (2011-07-22 12:43:00) [10]

Можно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо