Это сделанный на заказ пакет, принадлежащий вашей организации.(Вот почему Google не был полезен для вас.) Мы не можем точно сказать вам, что он делает или как его используют.Но мы можем догадаться.
Пакет не имеет процедур или функций, он просто определяет переменные массива определенного типа, которые могут использоваться другими программными модулями, такими как триггеры.Размещенный вами триггер присваивает значения массиву AffectedRows
.Предположительно, этот триггер срабатывает ДЛЯ КАЖДОГО РЯДА.Вероятно, есть еще один триггер в той же таблице, который запускает ПОСЛЕ ЗАЯВЛЕНИЯ, который читает этот массив и выполняет некоторую обработку, а затем назначает AffectedRows := EMPTY
для сброса массива.
Цель этой инфраструктуры - передать состояние через действия триггера.Распространенной причиной для этого является обход исключений из таблицы мутаций.Они рискованны, потому что государство не может быть гарантировано;например, если вставка завершится неудачно до того, как сработает триггер AFTER STATEMENT, массив AffectedRows
не будет повторно инициализирован, поэтому последующая обработка будет некорректной (или не удастся выполнить).
Поскольку 11g Oracle предоставляет составные триггеры, которые удаляютнужен для такого рода упаковки. Узнать больше .
Для дальнейшего изучения, сначала вы хотите проверить USER_TRIGGERS, чтобы найти другие триггеры в таблице, которой принадлежит упомянутый вами триггер.Если это не помогает, или вы хотите увидеть, используют ли другие таблицы этот пакет, выполните этот запрос:
select *
from user_dependencies
where referenced_type = 'PACKAGE'
and referenced_name = 'STATE_PKG_OVERRIDE_CN'