Я пытаюсь отследить некоторые информационные/первичные ключи в таблицах, а обычный механизм, который мы используем для этого, - это представления, которые представляют собой не что иное, как семантические слои поверх таблиц с чрезвычайно загадочными именами столбцов.Где/Как объявляются псевдонимы столбцов Oracle?
В качестве примера, таблица выглядит следующим образом:
create table F3002_WH
(
ixtbm CHAR(9) not null,
ixkit NUMBER not null,
ixmmcu CHAR(36) not null,
ixcpnt NUMBER not null,
ixsbnt NUMBER not null,
ixbqty NUMBER not null,
ixcoby CHAR(3) not null
);
Но взгляды превратить каждое из этих полей в читаемых имена, такие как «TYPE_BILL» вместо «ixtbm.»
Однако, когда я смотрю на DDL для зрения:
CREATE OR REPLACE VIEW F3002_VIEW AS
SELECT
ixtbm, ixkit, ixmmcu, ixcpnt, ixsbnt, ixbqty, ixcoby
from F3002_WH;
Я не вижу псевдоним. Я бы ожидал увидеть ixtbm as type_bill
.
Итак, мой вопрос в том, откуда этот псевдоним, и как я могу привязать его к имени исходного поля, не превращая его в научный проект? Я не понимаю, как это можно сделать при запросе представления, не входя в код представления.
Для чего это стоит, я использую PL/SQL Developer от All Around Automation. Я сильно подозреваю, что это не преступник, но в интересах полного раскрытия я подумал упомянуть об этом.
Как вы смотрите на DDL? 'dbms_metadata.get_ddl' покажет имена столбцов представления, независимо от того, соответствуют ли они таблице или нет, и вы можете видеть в' user_tab_columns' как для таблицы, так и для представления. Казалось бы странным, если PL/SQL Developer не показывал это, но я не устанавливал его на этом ПК для проверки. Также стоит упомянуть, какую версию базы данных и PL/SQL Developer вы используете, и именно там, где вы смотрите на DDL. –
Спасибо за отзыв. Я смотрел DDL через PL/SQL Developer. «Desc» в PL * SQL показывает псевдонимы, но не в том поле, к которому они относятся. Я нахожусь в Oracle 11. PL/SQL Developer - 11.0.4.1774. Похоже, мне нужно попробовать 'dbms_metadata.get_ddl' – Hambone
Там нет нигде, где отображается сопоставление от имени столбца представления к имени столбца таблицы, потому что необязательно простая ссылка - представление может быть против а не простой столбец. Вероятно, вы застряли в анализе запроса вида, чтобы получить имена столбцов таблицы и сравнив их с именами столбцов представления - либо из определения, либо из 'user_tab_columns' на основе' column_id'. (Вы не можете предположить, что значения 'column_id' для таблицы соответствуют представлению, они будут в вашем примере, но не должны и не могут быть безопасными принимать что-либо). –