DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Поведение переменных в процедурах и интерфейсах ODI.

Сегодня хочу рассказать о том, как ведут себя переменные в процедурах и интерфейсах. Напомню, что значение переменной в процедуре и интерфейсе может только использоваться в каких-то командах. Установить значение переменной ODI в интерфейсе нельзя.
Рассмотрим несколько возможных ситуаций:
  • Переменная вида Not Persistent, типа Alphanumeric или Text, без значения по умолчанию.
  • Запуск интерфейса или процедуры с использованием этой переменной на выполнение приведет к следующей ошибке:
  • Variable has no value: #ИмяПроекта.ИмяПеременной.
  • Переменная вида Not Persistent, типа Numeric, без значения по умолчанию.
  • Фактическое значение переменной в команде будет равно 0.
  • Переменная типа Date, как раз тот тип переменных, которые я никогда не использовал, как выяснилось, всегда имеют значение по умолчанию. В этом случае, конечно, будет использовано это значение.
  • Переменные вида Latest Value или Historize будут получать, соответственно, либо последнее установленное значение, либо значение на дату запуска. Если же такого значения нет - будет тот же результат, что и в пунктах 1 - 3.
Чтобы установить значение переменной для переменных вида Latest Value или Historize необходимо выполнить обновление или установку значения переменной в пакете, либо выполнить обновление переменной прямо из Дизайнера:
Все три способа равнозначны и приведут к тому, что в историю значения переменной запишется соответствующее значение для данного контекста. Для того, чтобы использовать в процедуре или интерфейсе переменную вида Not Persistent необходимо процедуру или интерфейс вызывать из пакета. И уже в пакете первым шагом сделать установку или обновление значения переменной, а затем вызывать интерфейс или процедуру:
Значение, установленное в пакете, для переменной Var_Test будет доступно и для процедуры Raise_Exception и для интерфейса TestDBLink. И это значение будет неизменно до следующей установки значения на шаге 4.







jAntivirus