powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы по системным таблицам
14 сообщений из 14, страница 1 из 1
Вопросы по системным таблицам
    #37344921
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые коллеги. У меня возникло несколько вопросов по FB. Прошу прощения, если уже обсуждалось.

Итак, имеется список таблиц БД с названиями и типами полей, полученный запросом из этой статьи:
http://www.ibase.ru/devinfo/sysqry.htm#1

Вопрос 1. Тип поля в ней записан в виде числового кода. В каком документе можно прочесть про то, какому типу данных соответствует число в RDB$FIELD_TYPE?

Вопрос 2. Можно ли как-нить узнать кодировку строкового поля?

Вопрос 3. В базе, которую я исследую (FB 2.1, юникодные строки в таблице), одно из полей в одной таблице задавалось как varchar (255), однако у меня его длина в этом запросе отображается как 80. Является ли это багом, или я неверно трактую значение поля RDB$FIELD_LENGTH ?

Вынужден проводить это исследование из-за странной ошибки. Одна из таблиц, с которой я работаю, содержит единственную строку, одно из полей как раз объявлено как varchar (255) в юникоде. Всё время я писал в это поле 20-символьные строки. Когда пришло время нарастить строку до 21 символа, попытка записи в это поле с клиента выдала баг Ariphmetic exception... . Запустил свой SQL-редактор, подцепился к базе, попробовал задать запрос руками - 20символьное значение пишется на ура, а при добавлении 21 символа - вышеописанный эксепшн. Возможности заинсталлировать IBExpert, увы, нет.

И ещё, коллеги, такой вопрос. Существует ли на рынке какой-нить платный или бесплатный аналог IBExpert, не требующий инсталляции?
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37344943
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiCoder_1980,

Ну ты бы хоть свой запрос привел. Нам что гадать какой запрос из статьи ты использовал.
Что касается IBExpert, он работает без инсталляции. Скачиваешь http://www.ibexpert.com/rus/ibe_sfx.exe - это обычный самораспаковывающийся архив.
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37344947
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первый вопрос про типы данных снимаю - невнимательно читал LANGREF, там это есть.

Запрос был такой:
Код: plaintext
1.
2.
3.
4.
select R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION, R.RDB$FIELD_NAME,
F.RDB$FIELD_LENGTH, F.RDB$FIELD_TYPE, F.RDB$FIELD_SCALE, F.RDB$FIELD_SUB_TYPE
from RDB$FIELDS F, RDB$RELATION_FIELDS R
where F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE and R.RDB$SYSTEM_FLAG =  0 
order by R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION 
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37344960
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Truhin, спасибо. Я наивно полагал, что раз архив при распаковке предлагает по дефолту каталог назначения Program Files, значит, он требует инсталляции. Щас распаковал на флэшку, с неё запустился без проблем.

Кстати, а Вы не в курсе, пишет ли IBExpert что-то в реестр (HKLM) или в Common Appdata, запись в которые по умолчанию доступна только юзерам-админам?
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37344961
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiCoder_1980одно из полей в одной таблице задавалось как varchar (255)
Чем докажешь? Все признаки указывают, что оно задавалось как VARCHAR(20).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37344967
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЧем докажешь? Все признаки указывают, что оно задавалось как VARCHAR(20).

Немного углублюсь в историю. Когда я только создавал базу (уже больше года как), у меня это поле было CHAR(20). Потом (месяца два назад) я сделал альтер в VARCHAR(255), всё работало нормально. Ну а сегодня вдруг проявился этот глюк. Посмотрел на своём редакторе запросов - RDB$FIELD_TYPE=14, RDB$FIELD_LENGTH=80. Потому и написал сюда.

Самое интересное - щас перезапустил машину, и глюк исчез - всё пишется как надо.

Всем спасибо, прошу прощения за беспокойство.
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37345023
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiCoder_1980я сделал альтер в VARCHAR(255)
если бы ты сделал действительно alter, то оно было бы как надо. А так ты похоже сделал или изменение длины напрямую через системные таблицы, или, что аналогично, редактированием домена (столбца) в IBExpert.
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37345035
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторесли бы ты сделал действительно alter, то оно было бы как надо. А так ты похоже сделал или изменение длины напрямую через системные таблицы, или, что аналогично, редактированием домена (столбца) в IBExpert.

В том-то и дело, что делал через alter, ибо прекрасно знаю, чем мне, относительному новичку, чревата запись напрямую в системные таблицы. IBExpert - вещь хорошая, но я пользуюсь им очень редко, ибо мне вполне хватает самопального редактора запросов - это уже дело привычки.

Решил на всякий случай сделать базе backup/restore - думаю, не повредит.
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37345140
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b/r не перекомпилирует метаданные.
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37345200
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiCoder_1980В каком документе можно прочесть про то, какому типу данных соответствует число в RDB$FIELD_TYPE?Попробуй заглянуть, например, в таблицу RDB$TYPES
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #37345337
DelphiCoder_1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторb/r не перекомпилирует метаданные.

Спасибо за информацию. Тогда, пожалуй, проще пересоздать и скопировать базу через скрипт с коррекцией соответствующего CREATE TABLE

авторПопробуй заглянуть, например, в таблицу RDB$TYPES

Спасибо, я уже нашёл эту информацию в LANGREF.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вопросы по системным таблицам
    #38514984
Поговорили, а про 2-й вопрос забыли...

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT F.RDB$FIELD_NAME as FIELD, C.RDB$CHARACTER_SET_NAME as CHARSET
FROM RDB$RELATION_FIELDS F, RDB$FIELDS FS, RDB$CHARACTER_SETS C
WHERE RDB$RELATION_NAME = :TABLE_OR_VIEW_NAME
    AND FS.RDB$FIELD_NAME = F.RDB$FIELD_SOURCE
    AND C.RDB$CHARACTER_SET_ID = FS.RDB$CHARACTER_SET_ID
ORDER BY F.RDB$FIELD_POSITION



Для параметров процедур:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT P.RDB$PARAMETER_NAME as PARAMETER_NAME,
    CAST(CASE P.RDB$PARAMETER_TYPE WHEN 0 THEN 'IN ' WHEN 1 THEN 'OUT' END as CHAR(3)) as PARAMETER_TYPE,
    C.RDB$CHARACTER_SET_NAME as CHARSET
FROM RDB$PROCEDURE_PARAMETERS P, RDB$FIELDS FS, RDB$CHARACTER_SETS C
WHERE RDB$PROCEDURE_NAME = :PROCEDURE_NAME
    AND FS.RDB$FIELD_NAME = P.RDB$FIELD_SOURCE
    AND C.RDB$CHARACTER_SET_ID = FS.RDB$CHARACTER_SET_ID
ORDER BY P.RDB$PARAMETER_TYPE, P.RDB$PARAMETER_NUMBER
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #38514996
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попурий А.В.Поговорили, а про 2-й вопрос забыли...

А ты через два года решил напомнить? И как тут все без тебя только обходились все это время...
...
Рейтинг: 0 / 0
Вопросы по системным таблицам
    #38515281
Просто я сюда забрел по поиску - надо было. Посидел, порылся - нашел. Может, еще кто-то также забредет, решение уже есть.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы по системным таблицам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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