Запрос к системным таблицам

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Запрос к системным таблицам

Сообщение Дмитрий » 03 мар 2005, 13:26

Люди добрые, помогите!

Нужен текст запроса к системным таблицам, который для определенной таблицы возвращает: название поля, тип поля, описание поля. Поля должны следовать в том порядке, в котором указывались при создании таблицы.

Просьба не отправлять к документации. Пробовал сам написать, но ИБ эксперт ругается последними словами, что типа транзакция не стартована и т.п. Окошки разные выбрасывает, проверить запрос не дает! :cry:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 мар 2005, 14:18

www.ibase.ru/devinfo/sysqry.htm

между прочим, это вторая ссылка если на ibase.ru в "поиск" набрать "запрос к системным таблицам.
Пробовал сам написать, но ИБ эксперт ругается последними словами, что типа транзакция не стартована и т.п. Окошки разные выбрасывает, проверить запрос не дает!
это бред, ибо IBE как и серверу все равно - запрос это к обычным таблицам или к системным.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 03 мар 2005, 15:31

это бред, ибо IBE как и серверу все равно - запрос это к обычным таблицам или к системным
Это не бред. Запускаем в эксперте SQL-монитор и смотрим, как эксперт получает эти данные. Копируем запрос и выполняем. И после этого начинается ругань.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 мар 2005, 20:16

ругань где, в SQL Editor? На что??? сроду в IBE не было никакой ругани на запросы хоть к каким таблицам.

Ты из моего документа запрос взял? Выполнил? Ругань была?

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 04 мар 2005, 09:53

ругань где, в SQL Editor
В нем, родимом. После выполнения запроса, когда появляется окошко результатов, вся эта ругань и начинается. Типа, транзакция не стартована, нарушение доступа и т.п. Причем, это только на запросах к таблицам RDB$...
Ты из моего документа запрос взял? Выполнил? Ругань была?
Взял, выполнил, все ОК!

Единственное, так и не вытащил дескрипшн полей. :cry:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 мар 2005, 10:11

В нем, родимом. После выполнения запроса, когда появляется окошко результатов, вся эта ругань и начинается. Типа, транзакция не стартована, нарушение доступа и т.п. Причем, это только на запросах к таблицам RDB$...
приведи пример запроса. не верю я в это. или у тебя какой-то древний IBExpert, или это барабашка.
Единственное, так и не вытащил дескрипшн полей.
какие проблемы, товарищ!? запрос написан человеческим языком. системные таблицы не являются секретом, все видно как на ладони. такая проблема добавить к селекту rdb$description из rdb$fields ?

ты на запрос-то посмотри, там все проще некуда.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 04 мар 2005, 10:20

приведи пример запроса
Да все просто. Открываешь SQL монитор. Кликаешь по какой-нибудь таблице и смотришь, что экперт делает. Копируешь из монитра самый большой запрос и выполняешь. У меня начинается ругань.
или у тебя какой-то древний IBExpert
2004.12.14
такая проблема добавить к селекту rdb$description из rdb$fields
Так добавлял! NULL возвращает, а в эксперте видно!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 мар 2005, 10:40

1. открыл монитор, скопировал "какой-нибудь" запрос. выполнил в SQL Editor. все ОК. IBE 2005.01.16, вопрос тогда к твоему старому IBE?

2. запрос смотрел, фары протирал, по колесам стучал? :) Таблицу rdb$relation_fields видел? подумай хоть чуть над запросом.
список таблиц - rdb$relations. список их столбцов - rdb$relation_fields. список полных описаний столбцов - rdb$fields. IBE наверняка для доменов описание кладет в rdb$description для rdb$fields, а для столбцов таблицы - в rdb$relation_fields.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 мар 2005, 10:42

и еще - ну раз ты в sql monitor смотришь, то вот такое например видел?

Код: Выделить всё

select RDB$DESCRIPTION from RDB$RELATION_FIELDS
where (RDB$RELATION_NAME = 'RDB$RELATION_CONSTRAINTS') and
(RDB$FIELD_NAME = 'RDB$CONSTRAINT_TYPE')

  IDX_NAME = RDB$INDEX_6
это тебе прямо намек, откуда оно описание столбцов берет. последняя строка к запросу не имеет отношения - это сервисный вывод IBE. Может ты именно такой запрос в SQL Editor вставляешь?

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 04 мар 2005, 11:17

Может ты именно такой запрос в SQL Editor вставляешь
Дим, я понимаю, что меня не видно, но все равно, разве я похож на дурака?

Насчет DESCRIPTION приношу извинения. Это я вчера не из той базы выбирал. Там описаний действительно нет.
вопрос тогда к твоему старому IBE
Скорей всего к нему. Кажется, я понял, в чем дело. Транзакции не подтвержденные в IBE могут на это влиять?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 мар 2005, 11:31

Дим, я понимаю, что меня не видно, но все равно, разве я похож на дурака?
а я? и ссылки на свой сайт даю, и запросы проверяю... :)
Скорей всего к нему. Кажется, я понял, в чем дело. Транзакции не подтвержденные в IBE могут на это влиять?
не-зна-ю. я вообще впервые вижу подобное поведение. с этим лучше в конфу к Хвастунову, только обновить IBE надо. А то и вдруг у него был наведенный баг, и он его исправил.

Ответить