Представления (Views)
Представления помогают нам организовать доступ к информации, находящейся в одной или нескольких таблицах. Особенно это удобно, когда такую информацию нужно получать часто, а условия отбора остаются неизменными. Можно ли узнать, какие представления есть в базе данных? Они перечислены в таблице RDB$RELATIONS вместе с таблицами. Попробуем их получить следующим SQL-запросом.
select rdb$relation_name from rdb$relations where (rdb$system_flag = 0) and rdb$view_source is not null;
В условии отбора мы указали, что нас интересуют только объекты, созданные пользователем (rdb$system_flag = 0), и имеют заполненное поле rdb$view_source, что говорит о том, что мы имеем дело с представлением.
Известно, что представления строятся на базе SQL-запросов. Попробуем получить текст этого запроса для некоторого представления.
select rdb$view_source from rdb$relations where rdb$relation_name = "PHONE_LIST";
Поле rdb$view_source имеет тип MEMO, и в нем содержится текст SQL.
Запрос, полностью идентичный запросу для таблиц, показывает структуру представления (возвращаемые поля, их тип и пр.).
SELECT A.RDB$FIELD_NAME, A.RDB$FIELD_POSITION, A.RDB$NULL_FLAG, A.RDB$FIELD_SOURCE, A.RDB$DEFAULT_SOURCE, B.RDB$COMPUTED_SOURCE, B.RDB$FIELD_LENGTH, B.RDB$FIELD_SCALE, B.RDB$FIELD_TYPE, B.RDB$FIELD_SUB_TYPE FROM RDB$RELATION_FIELDS A, RDB$FIELDS B WHERE A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME AND A.RDB$RELATION_NAME = "PHONE_LIST" ORDER BY A.RDB$FIELD_POSITION ASC;