DeepEdit!

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

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

Основной цикл

Основной алгоритм нашей функции заключается в циклической выборке записей из REF CURSOR, как показано в этом псевдокоде.

Здесь все просто. Всего лишь извлекаем записи из переданного в функцию курсора и проверяем их на соответствие критериям повторного наряда. Если условие выполнено, отправляем запись в конвейер. Теперь добавим загрузку критериев для данного региона.
Массовая выборка критериев
Благодаря тому, что наша табличная функция гарантирует, что записи будут сгруппированы по регионам, можно быть уверенным, что при каждом изменении идентификатора региона в извлекаемой записи происходит переход к следующему региону. А первое, что надо сделать для нового региона, - это загрузить его критерии повторных заказов в ассоциативный массив PL/SQL. Сделаем это при помощи такого курсора:

Теперь выполним в теле функции простую проверку «последнего ID региона», определяющую, изменилось ли значение, и если да, то вы полним массовую загрузку критериев:

Здесь проявляется еще одно преимущество табличных функций - возможность раздельного доступа к данным внутри самой функции. Это означает, что доступ к базе данных для получения нарядов может быть сконцентрирован в одном запросе, а для получения критериев - в другом.
Вернемся к нашей функции, псевдокод которой после добавления запроса критериев выглядит так:


 









jAntivirus