Ко многим вещам в ODI 11g надо привыкать, даже к документации. Файлов стало меньше, информация в них собрана немного по другому. Но, мне кажется, что этой информации стало больше, или она стала немного полнее.
Я не использовал для работы последовательности, поэтому решил посмотреть, что пишет документация об этом. Пока листал документ, увидел - в предыдущих разделах - как описаны переменные ODI. Так вот, судя по заголовкам разделов, они описаны чуточку более полно, чем раньше. Есть даже о том, как использовать переменную внутри другой переменной.
Введение.
Последовательность - это переменная, которая автоматически увеличивает свое значение каждый раз, когда она используется. Когда переменная не используется, ее значение может сохраняться в репозитории или в некой внешней таблице в БД.
Последовательности Oracle Data Integrator могут предназначаться для увязки существующих в СУБД последовательностей, тогда они называются натуральными последовательностями, или для имитации последовательностей для тех СУБД, в которых такой механизм не предусмотрен. Имитационные последовательности как раз и хранят свое значение в репозитории или ячейке некой таблицы в БД.
Так же как и для обычных переменных, последовательности могут быть глобальными, и доступными для использования в любых проектах, и проектными, видимыми только внутри проекта.
Oracle Data Integrator разделяет последовательности на три следующих типа:
- Стандартные - их текущее значение сохраняется в репозитории.
- Специальные - их текущее значение сохраняется в ячейке таблицы в БД. ODI читает значение из таблицы, блокирует строку (от конкуретных обновлений) и обновляет значение в строке после последнего увеличения.
- Натуральные - отображают реально созданные в СУБД последовательности на последовательности ODI.
Примечание по использованию стандартных и специальных последовательностей:
Создание последовательностей.
Как и для переменных, для создания последовательности необходимо выбрать соответствующий узел в дереве проекта, и, по правой кнопке мыши, вызвать команду New Sequence.

Далее необходимо указать:
Использование последовательностей и автозаполняемых колонок.
Чтобы генерировать новое значение для последовательности, данные должны обрабатываться в построчном режиме агентом. Поэтому использование последовательностей не рекомендуется при обработке больших объемов данных. В указанном случае лучше использовать специфичные для СУБД средства, такие как identity колонки в Teradata, IBM DB2, Microsoft SQL Server или sequences в Oracle.
Последовательности ODI могут быть использованы практически в любых выражениях, таких как:
Последовательности ODI могут использоваться даже:
Использование последовательности в виде заменяемого значения.
Последовательность может использоваться в выражениях в таком виде:
#_NEXTVAL
При таком использовании последовательности, ее значение будет увеличено только один раз перед выполнением выражения. Затем полученное значение поседовательности будет подставлено в текст команды. Значение последовательности будет одним и тем же для всех записей.
Использование последовательности в виде значения параметра.
Такое использование последовательности возможно только в процедурах или модулях знаний и только на вкладке Command on Target. Для передачи значения последовательности в параметр используйте следующий синтаксис:
:_NEXTVAL
В таком варианте использования последовательности она получает свое новое значение, а затем передается в SQL выражение. Значение последовательности увеличивается для каждой обрабатываемой строки. Но механизм, обеспечивающий такое увеличение, должен использоваться по разному для последовательностей разных типов:
Пример:
Примеры будут отдельно.
Указания по использованию имитационных последовательностей.
Чтобы быть уверенным в том, что последовательность будет обновляться для каждой записи добавляемой в таблицу, каждая строка должна пройти через Агента. Чтобы это произошло, придерживайтесь следующих правил:
Ограничения.
Последовательности имееют следующие ограничения:
Автозаполняемые (Identity) колонки.
Многие СУБД имеют встроенные средства для автоматического заполнения колонок таблицы уникальными, автоинкрементируемыми значениями.
При заполнении таких колонок данными, придерживайтесь следующих правил:
< Предыдущая | Следующая > |
---|