Для демонстрации того, как это работает, у меня как раз есть специально не для этого приготовленный пакет. Вот как выглядит его диаграмма:
Предназначен пакет для добавления некоторого количества строк в определенные таблицы, с повторением этого добавления определенное количество раз. Проще говоря, это цикл. Рассмотрим, что в пакете происходит пошагово:
- Вызов процедуры удаления того, что мы собираемся добавить. Обычно, является правильным подходом удалить то, что вы добавляете.
- Установка значения переменной v_Loop_Counter в 1. Переменная без сохранения истории (No History) типа Numeric, чтобы можно было использовать команду инкремента.
- Вызов процедуры, которая добавляет необходимое количество строк в нужные таблицы. Процедура делает добавление строк только в одну таблицу, но, в принципе, добавить в процедуру необходимое количество шагов для работы с другими таблицами очень просто.
- Далее идет команда Evaluate Varibale, которая сравнивает значение переменной v_Loop_Counter с константой. Цикл такого типа называется циклом с постусловием, так что если условие не выполняется, выполнение пакета заканчивается, но шаг 3 будет выполнен один раз в любом случае. Если же условие выполняется, выполняется следующая команда пакета.
- Увеличивается значение переменной v_Loop_Counter на единицу и выполнение передается на шаг 3.
Теперь можно рассмотреть, как выглядит сессия выполнения данного пакета при логгировании на уровне 6:
С точки зрения значения переменной меня будут интересовать шаги до начала тела цикла, а также те значения, которые переменная принимает в цикле.
Для того, чтобы увидеть значения переменной, необходимо открыть, двойным щелчком мыши, соответствующие шаги выполнения сессии и посмотреть в раздел "Variable and Sequence Values"
Шаг 1. Напомню, переменная без сохранения истории, соответственно, ее значение в момент выполнения шага номер 1 равняется нулю:
Шаг 2. Команда установки значения переменной. Отображаемое значение переменной равно 1:
Исходя из данного скришота, получается что ODI сохраняет значение переменной на момент завершения шага.
Шаги 3-4. Значение переменной не изменяется и остается равным единице.
Шаг 5. Значение переменной становится, после выполнения команды Increment, равным 2.
Теперь, после успешного нахождения давно ожидаемой возможности, намного удобнее будет проверять всякие разные штуки о переменных. Вроде вот этой.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.