powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ди узнать информацию о домене?
10 сообщений из 10, страница 1 из 1
Можно ди узнать информацию о домене?
    #32300351
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сабж. Собственно, необходимо узнать информацию (тип, длина...) о поле. Если брать эту информацию из связки rdb$relation_fields -> rdb$fields -> RDB$TYPES, то получается для всех целочисленных типов - INT64(8), VARCHAR превращается в VARYING ...

В общем, хочется увидеть описания полей таким, каким его показывает IBExpert (иначе говоря то, что писалось в CREARE TABLE).
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32300471
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А запрос можешь кинуть, который это возвращает?
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32300500
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь запрос не хитрый:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SELECT   
   R.RDB$FIELD_NAME  "column_name" ,
   T.RDB$TYPE_NAME  "Data_Type" ,
   TT.RDB$TYPE_NAME  "SUBTYPE" ,
   F.RDB$FIELD_LENGTH  "Data_Length" ,
   F.RDB$FIELD_SCALE  "Data_Precision" ,
   F.RDB$DEFAULT_VALUE  "Data_Default" ,
   CASE WHEN R.RDB$NULL_FLAG IS NULL THEN 'NULL' ELSE '' END  "Nullable" ,
   CASE WHEN C.RDB$CHARACTER_SET_NAME = 'NONE' THEN NULL ELSE C.RDB$CHARACTER_SET_NAME END  "CHARSET" ,
   R.RDB$DESCRIPTION  "COMMENT" 
FROM
   RDB$RELATION_FIELDS R
      JOIN RDB$FIELDS F
         ON R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME
      JOIN RDB$TYPES T ON
         F.RDB$FIELD_TYPE=T.RDB$TYPE
      LEFT OUTER JOIN RDB$TYPES TT
         ON F.RDB$FIELD_SUB_TYPE = TT.RDB$TYPE
      LEFT OUTER JOIN RDB$CHARACTER_SETS C
         ON F.rdb$CHARACTER_SET_ID = C.RDB$CHARACTER_SET_ID
WHERE
   R.RDB$RELATION_NAME=:TABLE_NAME AND
   R.RDB$SYSTEM_FLAG =  0  AND
   T.RDB$FIELD_NAME='RDB$FIELD_TYPE' AND
   (TT.RDB$FIELD_NAME='RDB$FIELD_SUB_TYPE' OR TT.RDB$FIELD_NAME IS NULL)
ORDER BY R.RDB$RELATION_NAME, R.RDB$FIELD_NAME
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32300544
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чё-то бошка не варит совсем у меня. В общем-то каждый тип соответствует одному из внутренних типов, а вот как их сопоставить - я и не знаю. Спроси как Хвастунов в эксперте сделал на news://victory.equitania.de/interbase.ibexpert.ru
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32300570
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я б рад, но доступен только http :(
На самом деле соответствие типов предлагают такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SMALLINT  7  
INTEGER    8 
QUAD        9  
FLOAT      10 
D_FLOAT  11  
CHAR       14 
DOUBLE    27  
DATE       35 
VARCHAR  37  
BLOB        261 

Однако ж это не панацея.
Кроме того, остается вопрос про реальный размер целой части для чисел с фиксированной точкой. Наверняка есть механизм вытаскивания этой информации из домена.
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32300963
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда напиши в эту вот эху
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32303154
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Gold: Пообщался. Удовлетворяющего ответа так и не получил. Ниже привожу выжимку из эхи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Q: Сабж. Собственно, необходимо узнать информацию (тип, длина...) о поле.
    Если брать эту информацию из связки rdb$relation_fields -> rdb$fields ->RDB$TYPES, 
    то получается для всех целочисленных типов - INT64( 8 ),
A:Такого быть не может. 
    Будет SHORT для SMALLINT, LONG для INTEGER, INT64 для BIGINT и т.п.

Q:Такое есть (факт). Предполагаю только то, что неправильно написал запрос 
    (он находится в корневом мэссэджэ). 
    Если будет время, посмотри плиз. Буду благодарен.

A: Я на твоем запросе и проверял, он вернул все корректно.
    Да, для NUMERIC( 18 ,  2 ) будет возвращаться INT64 и для правильной обработки 
   нужно еще заглядывать в RDB$FIELD_SUB_TYPE. 
   Но для INTEGER будет возвращен LONG, однозначно.

Q: VARCHAR превращается в VARYING ...
A: Дык это одно и то же.

Q: В общем, хочется увидеть описания полей таким, каким его показывает 
    IBExpert (иначе говоря то, что писалось в CREARE TABLE).
A: IBE тебе тоже покажет не совсем так, как писалось. 
    Например, INT от INTEGER он не отличает ;-) 
    В общем, делать надо свой код и затачивать его под каждую версию сервера. 
    Как Хвастунов и делает.
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32303229
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я видел. Просто видать это никому не нужно. Напиши Хвастунову письмо попробуй.
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32303571
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Я, извиняюсь, человек не местный. Фамилия Хвостова встречалась за последние дни уже неск-ко раз, а я даже не знаю, кто он таков. Проинформируйте плиз, а то мне неловко за свою некомпетентность (и, если можно, его конт. инф-ю тоже).
...
Рейтинг: 0 / 0
Можно ди узнать информацию о домене?
    #32303576
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Вдогонку)
Искренне извиняюсь за ошибку в фамилии (Хвостов -> Хвастунов). Есть тут один Хвостов. Так достал, что уже фамилию честного человека правильно написать не могу.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ди узнать информацию о домене?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]