Tag Archives: oracle

Как задать и использовать константу в виде коллекции на Pl/SQL.

Иногда в реальных задачах необходимо в константах хранить какую-либо коллекцию. На языке pl/sql просто создать коллекцию и перечислить через запятую данные, которые она будет содержать, нельзя. Такое возможно только с массивами, у которых строго задан размер и тип элементов. Если же возникла необходимость сделать предопределенную коллекцию-константу, то в этом случае её не получится проинициализировать простым

Read More

Конструкция select for update

Ни для кого не секрет, что в различных СУБД блокирование реализовано по разному. Есть несколько основных принципов блокирования в СУБД Oracle, незнание которых может привести к возникновению ошибок в приложениях.

  • Oracle блокирует данные на уровне строк и только при изменении. Эскалация блокировок до уровня блока или таблицы никогда не выполняется.
  • Oracle никогда не блокирует данные с целью считывания. При обычном считывание блокировки на строки не устанавливаются.
  • Сеанс, записывающий данные не блокирует сеанс, читающий данные.
  • Сеанс записи данных блокируется, только если сеанс записи уже заблокировал строку, которую предполагается изменять. Сеанс считывания данных никогда не блокирует сеанс записи.

Read More

Oracle APEX: Итоги в Interactive report на каждой странице [RU]

Одним из самых мощных инструментов визуализации данных в Oracle APEX является Interactive Report. Он предоставляет богатые возможности поиска, фильтрации, сортировки и вычисления итогов. Но есть ряд задач, часто возникающих в разработке бизнес-приложений, которые вызывают сложности. В нескольких постах я хочу предложить простой выход из положения.

Первым рассмотрим тривиальный вопрос — вывод итогов по всем данным на каждой странице отчета. При использовании встроенных итогов в IR, итоги выводятся на самой последней странице, если страниц несколько. В реальных приложениях очень часто итоги как раз и будут целью фильтрации и отображения данных — пользователю нужно сначала увидеть общую сумму, а потом уже, если она устраивает, смотреть детализацию. Если после применения фильтра пользователю приходится «отмотать» сначала 10-20 страничек, либо грузить ооочень длинную таблицу — пользователь звереет.

Оптимальным выходом является отображение итогов на каждой странице, но IR не предоставляет такой возможности. Значит, сделаем это сами.

In english, please…

Read More

Как создать индекс в Oracle, если таблица занята.

Иногда бывают такие ситуации, когда что-то случилось с индексами на важной таблице. Если работа с БД непрерывная и эта таблица очень часто занята, восстановить индексы достаточно проблематично, так как ресурс постоянно занят. Конечно можно поймать такой момент когда СУБД даст возможность создать index. Однако если эта проблема всплыла только после запуска длительной и важной операции,

Read More