DeepEdit!

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

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

Ошибка обновления переменной No value to affect to...

Если в пакете мы используем обновление некоторой переменной (Refresh) ODI выполняет указанный SQL скрипт для получения значения этой переменной. Но если указанный скрипт не возвращает ни одной записи появляется такая ошибка: "No value to affect to this variable for DefDate..."
В этом случае просто вызываем Оператор, смотрим на вкладку Description для шага обновления переменной, копируем оттуда SQL скрипт и пытаемся его выполнить в клиентском приложении СУБД.
Допустим, что скрипт написан правильно, ошибки в операторе SELECT для переменной нет, просто этих данных нет в таблице, из которой мы пытаемся получить значение и занести его в переменную для дальнейшего использования.
И вот, когда в процессе разработки, таких ситуаций становится все больше, у разработчика может возникнуть желание, временно конечно, установить для переменной значение по-умолчанию:
или модифицировать SELECT для обновления переменной так, чтобы он возвращал значение, даже если его нет в таблице источнике:
select coalesce(max(param_value, -1)
from t_params
where param_name = 'Param Name Invalid'
На мой взгляд, так делать нельзя. Ведь отсутствие значения для переменной, а, следовательно, и падение сценария загрузки данных в некую таблицу, может явиться сигналом того, что процесс загрузки пошел не совсем так, как ожидалось. Например, при переносе сценариев в промышленную среду загрузки ХД, скрипты добавления параметров не были выполнены, или были выполнены не до конца. Лучше, в таком случае, чтобы сценарий завершился с ошибкой, чем если в целевую таблицу запишутся не те данные из переменной, которая получила значение по-умолчанию.







jAntivirus