Поиск обходного пути к%RowType не работает для невидимых столбцов оракула

Ищите обходной путь к%RowType, не включая таблицу оракулов Невидимые столбцы. Я хочу, чтобы невидимые столбцы не влияли на устаревший код во время перехода, и чтобы я мог использовать%RowType или аналогичный в новом коде для доступа ко всем столбцам. Одна вещь, которую я пытался создать запись типа с полной структурой таблицы, но, похоже, она не допускает ссылки%Type на отдельные столбцы, т.е.

Type t_Inv_Test Is Record
(
  Test_Column_Vis Varchar2(20),
  Test_Column_Inv  Varchar2(20)
);

Не могу сделать:

Function Qry(p_Test_Val In t_Inv_Test.Test_Column_Vis%Type)
Return t_Inv_Test.Test_Column_Inv%Type;

После рассмотрения других вопросов о невидимых столбцах я также рассматриваю возможность определения представления со всеми столбцами, а затем использование View%Rowtype. Каков наилучший способ сделать это? Спасибо джо

1 ответ

"Я хочу, чтобы невидимые столбцы не влияли на устаревший код во время перехода"

Это звучит как сценарий использования для переопределения на основе Oracle Edition. EBR позволяет нам поддерживать две разные версии нашей модели данных в одной действующей базе данных. Это очень удобная функциональность, которую предоставляет Oracle, и которая оправдывает стоимость лицензии (обсудим).

В любом случае, вам непременно следует проверить это, прежде чем приступать к собственному внедрению. Узнать больше


"Таблицы оракула - это не редактируемые объекты".

Да, существует только одна версия фактической таблицы. Что позволяет EBR - это представление разных прогнозов таблицы разным пользователям. Идея заключается в том, что вы определяете редакцию перед тем, как добавить столбец в таблицу. Пользователи, подключающиеся с использованием старой редакции, видят версию таблицы без столбца; переключитесь на новую редакцию, и они увидят колонку. После того, как вы перенесли все ваши старые приложения на новую модель, вы можете удалить старую версию.

Эта магия достигается с помощью представлений и триггеров, почти так же, как вы предлагаете, но с гарантией надежности, которая обеспечивается за счет использования встроенной функциональности Oracle.

Другие вопросы по тегам