Как я уже рассказывал, в пакете переменные могут быть объявлены, обновлены, им может быть установлено значение или они могут быть использованы для сравнения, с последующим изменением порядка выполнения пакета.
Недавно встретилась ситуация, когда в пакете была такая последовательность для одной переменной: Декларация -> Обновление -> Декларация.
И я решил проверить, это просто ошибка, или в этом есть какой-то смысл?
Для этого я подготовил набор проверок, в ходе выполнения которых я буду проверять следующие аспекты: наличие переменной в сценарии; значение переменной в пакете.
Часть 1. Пакеты.

Ситуация 1. Пакет, с установкой значения переменной.
сценарий: переменная присутствует;
значение: значение - пустая строка.

Ситуации 2-4. Пакет с деклараций, пакет с рефрешем, пакет со сравнением переменной.
сценарий: переменная присутствует;
значение: значения переменной нет, выдается ошибка java.lang.Exception: Variable has no value:

Часть 2. Сценарии. Проверяем только значение переменной.
Ситуация 5. Пакет с одной переменной дважды: (декларация -> обновление). При этом запускается сценарий из этого пакета без ввода значения переменной. При рефреше переменная принимает значение 5.

значение: после декларирования - пустая строка, после обновления - значение 5.
Ситуация 6. Тот же вариант, только в сценарий передается значение для переменной. Передается число 6.
значение: после декларирования 6, после обновления 5.

Ситуация 7. Аналогично предыдущему, только в пакет добавляется еще одна декларация переменной (декларация -> обновление -> декларация), а затем в сгенерированный сценарий передается значение 6.

значение: после декларирования - значение 6, т.е. ровно то, что передавалось в сценарий при запуске, после обновления - 5, после второго декларирования по-прежнему 5.
Выводы:
- Если для переменной не установлен SQL текст обновления, ее обновление в пакете происходит, тем не менее, без ошибок.
- Для того, чтобы сценарий имел возможность получать значение в переменную достаточно декларации переменной в пакете.
- И наоборот, в пакете достаточно обновления переменной или установки ей значения для дальнейшего использования переменной в интерфейсах или процедурах.
- Последовательное декларирование, обновление и снова декларирование переменной нивелирует переданное при запуске сценария значение этой переменной.
Выходит, то, что я обнаружил в пакете, и что послужило причиной для этого небольшого исследования, просто ошибка разработчика.
| < Предыдущая | Следующая > |
|---|


